php MySQL - WHERE、AND 和 OR 语法
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/12178069/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
MySQL - WHERE, AND & OR syntax
提问by gskartwii
I am programming a private chat thing, but now I get this problem:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'to='gskartwii' OR sender='gskartwii' AND to='gs'' at line 1
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\rivase\private.php on line 38
This is my code:
我正在编写一个私人聊天程序,但现在我遇到了这个问题:
你的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在第 1 行的“to='gskartwii' OR sender='gskartwii' AND to='gs''附近使用的正确语法
警告:mysql_fetch_assoc() 期望参数 1 为资源,布尔值在 C:\xampp\htdocs\rivase\private.php 第 38 行给出
这是我的代码:
<!-- language: php -->
<?php
$result=mysql_query("SELECT * FROM rivase_chat_posts WHERE sender='$user' AND to='$user2' OR sender='$user2' AND to='$user'");
echo mysql_error();
while ($row = mysql_fetch_assoc($result)) {
$sender=$row['sender'];
$content=$row['content'];
$time=$row['time'];
echo "$sender : $content <span class='hidden'>$time</span><br />\n";
}
?>
Thanks for you all for the quick and good replies!
感谢大家的快速和良好的答复!
回答by juergen d
try escaping towith backticks
尝试to用反引号转义
$result=mysql_query("SELECT * FROM rivase_chat_posts
WHERE sender='$user' AND `to`='$user2'
OR sender='$user2' AND `to`='$user'");
回答by Wayne Whitty
TO is a reserved word.
TO 是保留字。
$result=mysql_query("SELECT * FROM rivase_chat_posts WHERE sender='$user' AND `to`='$user2' OR sender='$user2' AND `to`='$user'");
Should work.
应该管用。

