概要
プログラムのケアレスミス問題集PHP編へようこそ!このページでは、プログラミングにおける典型的なエラーやバグに焦点を当てて問題を提供しています。問題解決のヒントや解説を通じて、あなたのスキル向上をサポートします。エラーメッセージから学ぶ方法や効率的なコード修正の手法など、様々なアプローチを通じて、プログラミングの世界をより深く理解しましょう。さあ、挑戦してみましょう!
問題1
どこが間違えているでしょうか?
$list = array('a'=8 'b'=9 'c'=10);
foreach($list as $value){
echo $value;
}
解説1
答え:$listの定義でコンマが抜けている。
$list = array('a'=8 , 'b'=9 , 'c'=10);
foreach($list as $value){
echo $value;
}
配列の値には整数が含まれています。その際にキーと値の間には ,(カンマ)を使用する必要があります。
問題2
どこが間違えているでしょうか?
$b = 0;
$a = $b;
if($a = 1){
echo "フラグ1";
}else if($a = 2){
echo "フラグ2";
}else if($a = 3){
echo "フラグ3";
}else{
echo "フラグ0";
}
解説2
答え:if文の中の=が1つしかない。
$b = 0;
$a = $b;
if($a == 1){
echo "フラグ1";
}else if($a == 2){
echo "フラグ2";
}else if($a == 3){
echo "フラグ3";
}else{
echo "フラグ0";
}
=(イコール) は代入演算子です。しかし条件式の中では比較演算子 == または厳密な比較演算子 === になります。条件を評価するためには == または === を使用する必要があります。
問題3
どこが間違えているでしょうか?
$search_sql = 'select * from request_tbl where order_date >= :order_date1 and order_date <= :order_date2 ';
$stat = $PDO->prepare($sql);
$stat->bindValue(':order_date1', $_POST["search_from"]);
$stat->bindValue(':order_date2', $_POST["search_to"]);
$stat->execute();
$result = $stat->fetchAll(PDO::FETCH_ASSOC);
解説3
答え:prepareのsqlの指定の変数名が違う。
$search_sql = 'select * from request_tbl where order_date >= :order_date1 and order_date <= :order_date2 ';
$stat = $PDO->prepare($search_sql);
$stat->bindValue(':order_date1', $_POST["search_from"]);
$stat->bindValue(':order_date2', $_POST["search_to"]);
$stat->execute();
$result = $stat->fetchAll(PDO::FETCH_ASSOC);
$search_sql にSQLクエリが代入されていますが、後続のプリペアドステートメントの準備に使用される変数名は $sql です。したがって、これらの変数名が一致していないため、正しくSQLクエリが準備されません。
終わり
最後まで挑戦頂きありがとうございます。ミスを見つけることはプログラミングの学習の重要な部分であり、基礎の基礎です。プログラムが正常に動作しない場合、こういったケアレスミスである場合も多く、少しでもプログラムの理解に協力できていれば幸いです。