SQL LIKE 句使用時の変数の扱いはどうするの?(%)

PHP

こんにちは、ボブです。

PHPでデータベース(MySQL)をあつかう場合
prepareを使い文字列をLIKE句で検索する際
「?」に対する記述をどうするか調べてみました。

<?php require_once('login_data.php'); ?>

<?php $_hensu = '';

if($_SERVER['REQUEST_METHOD'] === 'POST'){

  $_hensu = htmlspecialchars($_POST[hensu]);} ?>

以下は<!DOCTYPE html>内

<?php 

if ($_hensu != ""){

  $stmt = $db->prepare("SELECT * FROM datatable WHERE hensu LIKE ?");

  $stmt->execute(['%'.$hensu.'%']);

  $records = $stmt->fetchALL(PDO::FETCH_ASSOC);

  foreach ($records as $record) { ?>

<table>

  <tr>

  <td><?= $record['hensu'];</td>

  </td>

</table>

?>

'%'.$hensu.'%' つまり

% + . + 変数 + . + % となるわけです。

「%」・・・LIKE句に必須

「.」 ・・・phpでの文字列連結

コメント

  1. taka より:

    phpの掲示板で検索機能を作っていて1週間くらいわからず困っていました。この方法で、できましたありがとうございました。