只要存在WHERE语句,PHP MySQL就会失败

Ell*_*iot -1 php mysql syntax mysql-error-1064

我试图对一个小的MYSQL表进行简单的查询,但是当我插入Where子句时,我突然得到一个无效的查询错误(while(mysql_fetch_array ){}在没有where的情况下添加了一个).MYSQL控制台提供了1064(语法)错误,但是,我检查了MYSQL文档,并且我正在使用正确的语法.

<?php
$ind=rand(1,3);
$quote=Null;
$sign=Null;
$afil=Null;
$con=mysql_connect(localhost,root,********);//connect to database
mysql_select_db("phone_site",$con);//select table
$query="SELECT * FROM quotes WHERE index=$ind";//get the row for that index
$data=mysql_query($query);
//print out text
print ("<p id=\"quote\">" . $data['quote'] . "</p>");
print ("<p id=\"ename\">" . $data['sign'] . "</p>");
print ("<p id=\"afill\">--  " . $data['afil'] . "</p>");
mysql_close($con);//close connection
?>
Run Code Online (Sandbox Code Playgroud)

谁知道问题是什么?我正在使用XAMPP.它的MYSQL有问题吗?

Pas*_*TIN 11

INDEX是MySQL的保留字之一:

某些单词(如SELECT,DELETE或BIGINT)是保留的,需要特殊处理才能用作表格和列名称等标识符.对于内置函数的名称也可能是这样.

如果您按第8.2节"模式对象名称"中所述引用保留字,则允许使用保留字作为标识符

如果您有一个具有该类型名称的列,则必须引用列名称 - 请参阅架构对象名称:

标识符引号字符是反引号("`")

这意味着您的查询应如下所示:

$query="SELECT * FROM quotes WHERE `index`=$ind";
Run Code Online (Sandbox Code Playgroud)


为了完成我的答案,在看到一个尘土机的人后,谁说:

桌子创建时我没有抱怨,我有点惊讶.

我想这个表是用phpMyAdmin或MySQL Workbench之类的工具创建的; 而那些通常(总是为某些人)引用列名,以避免这种问题.


评论后编辑:我没有看到,但你正在使用这种代码:

$data=mysql_query($query);
print ("<p id=\"quote\">" . $data['quote'] . "</p>");
Run Code Online (Sandbox Code Playgroud)

请求mysql_query函数不直接写给返回数据:它只返回"的ressource" (引用手册的页面):

返回的结果资源应该传递给mysql_fetch_array()处理结果表的其他函数,以访问返回的数据.

不确定它会解决你所有的问题(没有显示任何内容,甚至原始HTML标签都不奇怪),但它至少可以帮助一点......