$_GETで受けとたった複数の値を渡したいです。
取得するURL:https://....php?name=name&page=1
<?php //デバッグ(開発)時は必ず記述する ini_set('display_errors', true); error_reporting(E_ALL); date_default_timezone_set('Asia/Tokyo'); $db_host=''; $db_name=''; $db_user=''; $db_pass=''; $db_table=''; //データベースへ接続する try { $pdo = new PDO("mysql:dbname=$db_name;host=$db_host;charset=utf8", $db_user, $db_pass, [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, ]); } catch (PDOException $e) { header('Content-Type: text/plain; charset=UTF-8', true, 500); exit($e->getMessge()); } function h($str) { return htmlspecialchars($str, ENT_QUOTES, 'UTF-8'); } $query = "SELECT .... FROM sample WHERE name=:name ORDER BY id DESC LIMIT ".($_GET['page']*10).", 10";; $stmt = $pdo->query($query); $rows = $stmt->fetchAll(); $name = filter_input(INPUT_GET, 'name'); $arr = []; $arr[':name'] = $name; ?>
↓以下に修正したのですがエラーが出てしまいます。
エラー内容:SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ':name ORDER BY id DESC LIMIT 10, 10' at line 1' in
"SELECT .... FROM sample WHERE name=:name ORDER BY id DESC LIMIT ".($_GET['page']*10).", 10"; $name = filter_input(INPUT_GET, 'name'); $arr = []; $arr[':name'] = $name;
本来はnameとpageの2つを直したいです。
SELECT .... FROM sample WHERE name=:name;
だと問題なく取れます。
回答1件
あなたの回答
tips
プレビュー