<?php
$query = "SELECT * ";
$query .= "FROM subjects ";
$query .= "WHERE id='" . $subject_id ."' ";
$query .= "LIMIT 1";
?>
问题原因在于: 错误:“数据库查询失败:您的SQL语法中有错误;请检查与您的MySQL服务器版本对应的手册,以便在第1行的'LIMIT 1'附近使用正确的语法”
那么为什么......尽管语法是正确的。鉴于我的错误?!
答案 0 :(得分:0)
错误消息来自执行您问题中未显示的一行代码。
一个显而易见的可能性是此代码生成的字符串值未传递给MySQL。另一种可能性是$subject_id
包含一个被解释为SQL文本的字符串值,而$query
不包含您认为它包含的内容。还有很多其他的可能性。
对于这样的调试问题,我们确实需要确定实际抛出错误的代码行。 (在你的情况下,它将调用mysql_,mysqli或PDO执行或准备函数或方法。)
您可以做的是在紧接引发错误的行之前的行上添加传递给MySQL的ACTUAL SQL文本的echo
或var_dump
。
例如,如果在此代码之后,在解析或执行调用之前的一行代码修改$query
$query .= " LIMIT 1";
这将在查询中添加第二个LIMIT子句,该子句无效,并且会抛出相同的错误。
重申:你问题中发布的代码行不会引发错误。您发布的代码行只是将字符串值赋给变量。 (这可能是传递给MySQL的字符串值,但我们在代码中的任何位置都没有看到。)
答案 1 :(得分:-1)
您正在使用'subject_id'
可能是int格式存在问题因此请使用subject_id
和Limit 1
替代Limit 0,1
。
<?php
$query = "SELECT * ";
$query .= "FROM subjects ";
$query .= "WHERE id=" . $subject_id;
$query .= "LIMIT 0,1";
?>
答案 2 :(得分:-4)
您不需要连接可以使用的变量
<?php
$query = "SELECT * ";
$query .= "FROM subjects ";
$query .= "WHERE id='$subject_id' ";
$query .= "LIMIT 1";
?>
你的变量后面还有两个分号,如果你的变量是一个整数,它也不需要用单引号。