質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
phpPgAdmin

phpPgAdminは、PHPで作成された複数のPostgreSQLデータベースをブラウザから簡単に管理・操作できるツール。テーブルの作成や参照を始め、データのバックアップやリストアといった操作が可能になります。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

599閲覧

SQLのプレースホルダを実装中にエラーが出ているのですがどこが間違っているのか分からないのでご教授ください。

k_alt

総合スコア3

phpPgAdmin

phpPgAdminは、PHPで作成された複数のPostgreSQLデータベースをブラウザから簡単に管理・操作できるツール。テーブルの作成や参照を始め、データのバックアップやリストアといった操作が可能になります。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2023/07/13 04:52

編集2023/07/13 04:53

実現したいこと

データベースにあらかじめ登録してあるデータを取得してくる

前提

XAMPPを使用してデータベースにデータを登録したあと
inputタグに入力した値をSQLのWHEREで条件を絞って取得したいのですが
bindValueの名前付きプレースホルダのところでエラーがでてしまいます。

入力された値をphpの変数にいれてWHEREにいれると表示するのでプレースホルダのところで間違ってるのは間違いないとおもうのですが色々調べてもわからないのでご教授いただきたいです。

発生している問題・エラーメッセージ

Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ':low' at line 1 in C:\xampp\htdocs\task\step4\task04-2.php:42 Stack trace: #0 C:\xampp\htdocs\task\step4\task04-2.php(42): PDO->query('SELECT * FROM m...') #1 {main} thrown in C:\xampp\htdocs\task\step4\task04-2.php on line 42

該当のソースコード

PHP

1 $DB_HOST = 'localhost'; 2 $DB_PORT = 3306; 3 $DB_DATABESE = 'task'; 4 $DB_USERNAME = 'ksoluser'; 5 $DB_PASSWORD = 'ksolpass'; 6 $DB_OPTION = 'charset=utf8'; 7 8 $get_low = (int)$_GET['lower']; 9 $get_upp = (int)$_GET['upper']; 10 11 12 13 14 try{ 15 $pdo = new PDO("mysql:host={$DB_HOST};port={$DB_PORT};dbname={$DB_DATABESE};{$DB_OPTION}",$DB_USERNAME,$DB_PASSWORD); 16 }catch(PDOException $e){ 17 print('Error:'.$e->getMessage()); 18 die(); 19 } 20 echo "接続成功"; 21 22 // SQL文指定 23 $stmt = $pdo->query("SELECT * FROM m_fruits WHERE :low < value AND value < :upp"); 24 25 // SQLインジェクション対策 SQL文にphp変数をいれないようにバインドで処理 26 $stmt->bindValue(':low', $get_low, PDO::PARAM_INT); 27 $stmt->bindValue(':upp', $get_upp, PDO::PARAM_INT); 28 29 // SQL文実行 30 $stmt->execute(); 31 32 // 実行結果を複数件取得して変数に格納(1つならfetch()) 33 $fruits = $stmt->fetchAll();

補足情報(FW/ツールのバージョンなど)

MySQL ver:15.1

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

凡ミスですね

PHP

1$pdo->query 2↓↓↓ 3$pdo->prepare

投稿2023/07/13 05:11

yambejp

総合スコア114843

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

k_alt

2023/07/13 05:17

ほんとですね... すいません、ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問