###実現したいこと
PHPでのLIKE検索でinput type="text"に入力された文字列を使い、SQLでデータベースからデータを引っ張ってきたい。
万が一不足している情報がありましたら、教えていただけますと幸いです。
PHP
1 $sql='SELECT * FROM anketo WHERE nickname LIKE "/*ここに変数*/" ';
発生している問題・エラーメッセージ
Parse error: syntax error, unexpected '"' in C:\xampp\htdocs\phpkiso\kensaku.php on line 19
該当のソースコード
HTML
1<!DOCTYPE html> 2<html lang="jp"> 3 4<head> 5 <meta charset="UTF-8"> 6 <title>php基礎</title> 7</head> 8 9<body> 10 <form method="post" action="kensaku.php"> 11 <p>ご意見コードを入力してください</p> 12 <input name="nickname" type="text" style="width: 100px"> 13 <input type="submit" value="送信"> 14 </form> 15</body> 16 17</html>
PHP
1<!DOCTYPE html> 2<html lang="jp"> 3 4<head> 5 <meta charset="UTF-8"> 6 <title>php基礎</title> 7</head> 8 9<body> 10 <?php 11 $nickname=$_POST['nickname']; 12 13 $dsn='mysql:dbname=phpkiso;host=localhost'; 14 $user='root'; 15 $password=''; 16 $dbh=new PDO($dsn,$user,$password); 17 $dbh->query('SET NAMES utf8'); 18 19 $sql='SELECT * FROM anketo WHERE nickname LIKE '".$nickname"' '; 20 $stmt=$dbh->prepare($sql); 21 $stmt->execute(); 22 23 while(1){ 24 $rec=$stmt->fetch(PDO::FETCH_ASSOC); 25 if($rec==false){ 26 break; 27 } 28 print $rec['code'].$rec['nickname'].$rec['email'].$rec['goiken'].'<br>'; 29 } 30 31 $dbh=null; 32 ?> 33</body> 34 35</html> 36
試したこと
データベースのテーブルには'nickname'と命名したフィールドが存在します
PHP
1 $sql='SELECT * FROM anketo WHERE nickname LIKE "やっくん" '; //成功
上記の文ではsubmitクリックで、フィールドnickname’やっくん’のレコードの取得に成功しました。
このことから構文ミスやスペルミスのではなく、変数がうまく取得されていないと判断できます。
おそらく見当違いな方法を試している気がします。
以下試したこと一覧です。
PHP
1$sql='SELECT * FROM anketo WHERE nickname LIKE '".$nickname"' '; 2$sql='SELECT * FROM anketo WHERE nickname LIKE "'.$nickname'" '; 3$sql='SELECT * FROM anketo WHERE nickname LIKE "'.($nickname)'" '; 4//()で閉じてみたり 5$sql='SELECT * FROM anketo WHERE nickname LIKE '".$nickname"; 6//外に出して連結してみたり
補足情報(FW/ツールのバージョンなど)
OS=Windows10 / ブラウザ=chrome / エディタ=Brackets Ver.1.14 / 開発環境=XAMPP Ver3.2.4 /
データベースエンジン=MySQL
回答5件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/25 15:34