phpの学習での疑問点について質問をお願いいたします。
以下の構文は、SQLを使いデーターベースから、$searchを含むデータ一覧を表示するプログラムです。ただしqueryで扱っており、安全性が低いのでprepareを使った構文に直したいと思います。
<?php try { $db = new PDO('mysql:dbname=mydb;host=127.0.0.1;charset=utf8', 'root',''); } catch (PDOExcepption $e) { echo 'DB接続エラー: ' . $e->getMessage(); } $search = "a";//検索する文字 $memos = $db->query('SELECT * FROM memos WHERE memo LIKE "%' . $search . '%" '); ?> <article> <?php while ( $memo = $memos->fetch()): ?> <p><?php print($memo['memo']); ?></p> <time><?php print($memo['created_at']); ?></time> <hr> <?php endwhile; ?> </article>
以下のようにprepareを使って直しました。
<?php try { $db = new PDO('mysql:dbname=mydb;host=127.0.0.1;charset=utf8', 'root',''); } catch (PDOExcepption $e) { echo 'DB接続エラー: ' . $e->getMessage(); } $search = "a";//検索する文字 $memos = $db->prepare('SELECT * FROM memos WHERE memo LIKE "%' . ? . '%" '); $memos->execute(array($search)); ?> <article> <?php while ( $memo = $memos->fetch()): ?> <p><?php print($memo['memo']); ?></p> <time><?php print($memo['created_at']); ?></time> <hr> <?php endwhile; ?> </article>
しかし、以下のようなエラーが発生します。
Parse error: syntax error, unexpected token "?" in C:\xampp\htdocs\memo\index2.php on line 30
prepareで書き換えるには、どのようにすればよいのでしょうか?よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー