kohhi回答ポイント 300ptウォッチ

PHPでのwhere文について

tokuisakiテーブルにnameフィールドがあります。
$myoujiが「太田」だったとします。
nameが「太田一郎」だった場合、「上太田一郎」さんは下記のSQL文で抽出されません。
select * from tokuisaki where name like '$myouji%'

nameが「太田川一郎」だった場合、「太田川一郎」さんは上記のSQL文で抽出されます。
これを「太田一郎」で抽出され「太田川一郎」だった場合、抽出されないようにしたいのですが。

$myoujiの文字数を数えて(例えば3文字)、nameの先頭から$myoujiの文字数分だけ(例えば3文字)同じ、
というSQLが書けません。

書いてうまくいかない構文
$mojisuu = mb_strlen( $myouji );
select * from tokuisaki where substr('name', 0, $mojisuu) = '$myouji'

実際はprepareステートメントを使って以下のように書いてます。
$mojisuu = mb_strlen($myouji);
$st02 = $dbh->prepare("select * from tokuisaki where substr('name',0,$mojisuu) = '$myouji' ORDER BY byear DESC");
$st02->execute();

エラーは出ないのですが1件も抽出されません。
おかしな箇所を教えてください。
よろしくお願いします。
PHP7です。

※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。
ログインして回答する

ベストアンサー

その他の回答

この質問へのコメント

コメントはありません

この質問への反応(ブックマークコメント)

質問の情報

登録日時
2018-10-19 17:38:40
終了日時
2018-10-24 07:11:47
回答条件
1人1回まで

この質問のカテゴリ

この質問に含まれるキーワード

SQL1319PHP7798ステートメント11上記129LIKE42

人気の質問

メニュー

PC版