はじめに
PHP勉強中してます。間違ったりしていたら指摘等よろしくお願いします。
環境
ツール | バージョン |
---|---|
MAC | Big Sur 11.5.2 |
PHP | 7.4.0 |
つまずいたところ事
ブログアプリ作成時、プリペアドステートメントを使った検索機能のbindValueのパラメータの書き方でつまずいた。
どんなエラーが起きたか
下記のSQLだと、うまく取得できずにNULLがかえってくる。
//検索ワードをPOST送信
$searchWord = $_POST['search'];
//SQL
$sql = <<< EOF
SELECT
*
FROM
blogs
WHERE
contents
LIKE
'%" :searchWord "%'
EOF;
//bindValue
$statement->bindValue('searchWord', $searchWord, PDO::PARAM_STR);
解決方法
SQLのLIKEでは%を入れずプレースホルダのみ。
後でbindValueを書くときに、第2引数に%を追加したら実装できました。
$sql = <<< EOF
SELECT
*
FROM
blogs
WHERE
contents
LIKE
:searchWord
EOF;
//bindValue
$statement->bindValue(':searchWord', '%' . $searchWord . '%', PDO::PARAM_STR);
参考