1. HOME
  2. コラム
  3. その他
  4. 【問題集】プログラム ケアレスミス PHP編

【問題集】プログラム ケアレスミス PHP編

  • このエントリーをはてなブックマークに追加
プログラム ケアレスミス問題集 PHP編
プログラミングのスキルを問題!PHPコードのミスを見つけよう!

目次

概要

プログラムのケアレスミス問題集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クエリが準備されません。

終わり

最後まで挑戦頂きありがとうございます。ミスを見つけることはプログラミングの学習の重要な部分であり、基礎の基礎です。プログラムが正常に動作しない場合、こういったケアレスミスである場合も多く、少しでもプログラムの理解に協力できていれば幸いです。

  • このエントリーをはてなブックマークに追加