SQL语法错误MariaDB服务器版本,在第1行的“WHERE ID = 4”附近使用正确的语法

时间:2014-12-04 19:41:34

标签: php mysql sql mysqli

我有这一行SQL

$sql = "SELECT ID, ListStID, ListEmail, Title FROM $entry_database 
        WHERE ID = '". $ReqBookID ."'";
$result = mysqli_query($conn, $sql);

如您所见,如果ID等于一个数字(或文本)字符串,我将选择一个条目的ID,ListStID,ListEmail和Title Column,这是由用户在表单中给出的。

一切都很好,我编写代码时没有出现任何语法错误(我使用的是代码编辑器软件。但是,当我在线使用它时,我收到此错误:

  

错误:SELECT ID,ListStID,ListEmail,Title FROM WHERE ID ='4'你   您的SQL语法有错误;检查对应的手册   您的MariaDB服务器版本,以便在'WHERE ID附近使用正确的语法   第1行='4'

我是PHP的新手,我确信我要么添加额外的'或',所以如果你能解决这个问题,我会非常感激。我已经尝试过类似问题的答案,但没有成功了。

更新1:

感谢所有指出的人,我修复了$ entry_database错误,现在它正常工作。

很多人感谢您所做的一切努力。

4 个答案:

答案 0 :(得分:4)

您有空$entry_database变量。如您所见,错误:ListEmail, Title FROM WHERE ID bewteen FROM WHERE 应为表名。 SELECT的正确语法:

SELECT columns FROM table [optional things as WHERE/ORDER/GROUP/JOIN etc]

以你的方式成为:

SELECT ID, ListStID, ListEmail, Title FROM some_table_you_got WHERE ID = '4'

答案 1 :(得分:1)

您错过了数据库名称:

$sql = "SELECT ID, ListStID, ListEmail, Title FROM ".$entry_database." WHERE ID = ". $ReqBookID .";

确保$ entry_database不为null或为空:

var_dump($entry_database);

另请注意,您不需要在''中使用$ ReqBookID,就好像它是一个Int。

答案 2 :(得分:1)

在表之前将表名分配给变量$ entry_database:

$entry_database = "my_table"; // as an example
$sql = "SELECT ID, ListStID, ListEmail, Title FROM $entry_database ....";

关于WHERE-Statement,您还应该了解SQL注入:http://php.net/manual/en/security.database.sql-injection.php

让您的脚本更安全。

答案 3 :(得分:-1)

当我们不给数据库值单引号或双引号时,也会出现此问题。

错误的方式:

$query ="INSERT INTO tabel_name VALUE ($value1,$value2)";

因为数据库插入值必须用引号''//“

正确的方法:

$query ="INSERT INTO STUDENT VALUE ('$roll_no','$name','$class')";