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标签都不奇怪),但它至少可以帮助一点......
| 归档时间: |
|
| 查看次数: |
163 次 |
| 最近记录: |