在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}%'");
上面的内容实际上会有效。
答案 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和其他获取功能。如果您需要更多帮助,请更新您的问题,使其更加具体。