コード内の文字列をそれらの文字列に相当する変数に置き換えると、コードで致命的なエラーが発生します。
幅広で反対側の葉を持つ樹種のシンボルのリストを生成しようとしています。私は PDO 準備済みステートメントでこれをうまく行います:
$stmt=$conn->prepare('SELECT Symbol FROM Leaf WHERE Type = ? AND BroadArrangement = ? ');
$stmt->execute(array('B' , 'O'));
$i=0;
while ($result = $stmt->fetch()) : ?>
<li><a href="#"><?php print_r($result['Symbol']); ?> </a></li>
<?php $i++;
endwhile;
致命的なエラー (以下を参照) は、クエリとパラメーターを変数にバインドするように置き換えると発生します。
$q="'SELECT Symbol FROM Leaf WHERE Type = ? AND BroadArrangement = ? '";
$b= " 'B','O' ";
$stmt=$conn->prepare($q);
$stmt->execute(array($b));
$i=0;
while ($result = $stmt->fetch()) : ?>
<li><a href="#"><?php print_r($result['Symbol']); ?> </a></li>
<?php $i++;
endwhile;
致命的なエラー: メッセージ SQLSTATE[42000] を含む例外 'PDOException' がキャッチされていません: 構文エラーまたはアクセス違反: 1064 SQL 構文にエラーがあります。Near ''SELECT Symbol FROM Leaf WHERE Type = ? ''SELECT Symbol FROM Leaf WHERE Type = ? AND ブロードアレンジメント = ? '' at line 1' in /Applications/MAMP/htdocs/Tree_ID_Website/Compare/practice_compare.php:253 スタック トレース: #0 /Applications/MAMP/htdocs/Tree_ID_Website/Compare/practice_compare.php(253): PDOStatement->execute (配列) #1 {main} が /Applications/MAMP/htdocs/Tree_ID_Website/Compare/practice_compare.php の 253 行目にスローされる
シンプルなものが欠けているような気がしますが、何がわかりません。変数 $q と $b を表示またはエコーすると、正しく機能するコードのセクションで渡された文字列と同じになります。変数のスコープに問題がありますか? または、変数を少し変更する必要がありますか? 私は運がなかったので引用符を返してみました。
他の投稿から、クエリに予約済みのキーワードが含まれていると、このエラーが発生することがよくあります。しかし、私のものはそうではなく、私は混乱しています。
ご協力いただきありがとうございます。