我有这一行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错误,现在它正常工作。
很多人感谢您所做的一切努力。
答案 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')";