PHP和Mysql || '或'句法?

时间:2016-10-02 15:03:29

标签: php mysql

在mysql中我有类似的东西:

$currentname = mysql_query("SELECT * FROM posts LIMIT $start, 5 WHERE ");   

我如何能够在下面做这样的事情:

$currentname = mysql_query("SELECT * FROM posts LIMIT $start, 5 WHERE `title` LIKE '%{Hello world}%' || Where `text` LIKE '%{Hello World}%'");

上面的内容实际上会有效。

3 个答案:

答案 0 :(得分:0)

试试这个:

$queryResult = mysql_query("SELECT * FROM posts WHERE `title` LIKE '%{Hello world}%' OR `text` LIKE '%{Hello World}% LIMIT $start, 5'");
$currentName = mysql_fetch_assoc($queryResult);

如果你期待很多结果......

   while($currentName = mysql_fetch_assoc($queryResult)) {
     //your code here...
   }

答案 1 :(得分:0)

||替换为OR,然后移除其后的额外WHERE。在SQL中,||OR&&AND。您可以阅读更多here

注意:请花时间阅读手册,这绝对有帮助。

答案 2 :(得分:0)

您可以在MySql中使用OR,它可能非常适合大多数情况。

然而,

OR在性能方面略有不利,因为每个OR查询都会再次运行整个查询。我不是MySql性能大师,但看起来UNION会更好地优化。所以一般而言,至少使用更多的OR语句,你应该使用这样的UNION:

SELECT your_union_result.* FROM
(
SELECT * FROM posts WHERE `title` LIKE '%{Hello world}%'
UNION
SELECT * FROM posts WHERE `text` LIKE '%{Hello World}%'
) AS your_union_result
ORDER BY your_union_result.order_column
LIMIT $start, 5

请注意:我的版本有一个子查询。如果您想订购结果或限制总行数,则需要它。您现在有一些选项可以获取实际结果。

你可以逐行fetch_assoc(),fetch_array()等等。我不清楚你想要什么作为实际结果。 $ currentname表示帖子或用户名,但$ start的限制表示你想要一个列表。

继续阅读http://php.net/manual/en/function.mysql-fetch-array.php和其他获取功能。如果您需要更多帮助,请更新您的问题,使其更加具体。