【发布时间】:2015-10-06 14:22:50
【问题描述】:
我不断得到
'SQLSTATE[42000]: 语法错误或访问冲突:1064 你有一个 SQL 语法错误;检查与您对应的手册 MySQL 服务器版本,用于在第 5 行的 ''5'' 附近使用正确的语法
“5”是从下拉框中选择的任何数字。
这是我迄今为止与该问题相关的代码。
if (isset($_GET['orderBy']) && $_GET['orderBy'] == 'rank' || $_GET['orderBy'] == 'release_year' || $_GET['orderBy'] == 'author'
|| $_GET['orderBy']== 'publisher')
if (isset($_GET['returnLimit']) && $_GET['returnLimit'] == 1 || $_GET['returnLimit'] == 5 || $_GET['returnLimit'] == 10
|| $_GET['returnLimit'] == 25 || $_GET['returnLimit'] == 50 || $_GET['returnLimit'] == 75
|| $_GET['returnLimit'] == 100)
{
try{
$db = new PDO ("mysql:host=localhost;dbname=user", "user", "12345");
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$minimum = $_GET['minimumYear'];
$maximum = $_GET['maximumYear'];
$order = $_GET['orderBy'];
$limit = $_GET['returnLimit'];
$q = "SELECT *
FROM book
WHERE '$minimum' <= '$maximum'
ORDER BY '$order'
LIMIT '$limit'";
$query = $db->query($q);
$statement = $db->prepare($query);
$statement->execute();
从我得到的错误来看,我猜它之所以出现是因为没有将数字传递给 $limit,因此 SQL 查询与 'LIMIT' 无关。我检查了语法,但无法弄清楚我做错了什么,任何帮助将不胜感激。
【问题讨论】:
-
你能找到单独的 SQL 语句吗,在那个 php 文件之后?
-
回显 sql 语句 ($q) 然后在 phpmyadmin 中尝试调试
-
试试这个 $q = "SELECT * FROM book WHERE ".$minimum."
-
我回应了我的 $q,并得到了 'SELECT * FROM book WHERE '1900'
-
@aimme 我得到 警告:PDO::prepare() 期望参数 1 是字符串,在第 35 行的 /home/user/public_html/PDO_Test/bookFetch.php 中给出的对象致命错误:当我使用它时,在第 36 行的 /home/user/public_html/PDO_Test/bookFetch.php 中调用一个非对象的成员函数 execute()。