php - SQL 查询中的数组?

标签 php mysql

我在 WHERE 子句中使用数组进行 SQL 查询时遇到问题。

例如:

我的数组:

$myarray[1] = "hi";
$myarray[2] = "there";
$myarray[3] = "everybody";

我的 MySQL 语句:

SELECT * FROM myTable WHERE title='".$myarray[]."'

有什么办法可以实现吗? 我是这样自己解决的:

for(...) {
$where = $where." title='".$myarray[$count]."' OR ";
}
$where = substr($where , 0, -3);
.....
SELECT * FROM myTable WHERE ".$where."

但是如果我的数组中有数千个条目,SQL 语句会太大而且很慢,对吧?

谢谢

最佳答案

可以使用mysql的IN-function

编辑:正如amosrevira 所说,您需要转义数组中的字符串。

$myarray[1] = "'hi'";
$myarray[2] = "'there'";
$myarray[3] = "'everybody'";

$newarray = implode(", ", $myarray); //makes format 'hi', 'there', 'everybody' 

SELECT * FROM myTable WHERE title IN ($newarray);

关于php - SQL 查询中的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5295714/

相关文章:

php - 使用 XMLReader、DOM、Xpath 获取给定节点的标签名称和值

php - 订阅 - 如何处理大量内容和订阅量?

mysql - 如何优化具有 2 个不同内连接的 Mysql 查询? (InnoDB)

php - 使用 php 创建 jqplot 图表

php - 无法让 Laravel 4 在本地主机上工作

php - 在 PHP 中显示当前 Git 'version'

php - Google_Service_Directory - (403) 无权访问此资源/api

mysql - 如何从表中获取 10 个最近的位置

MySQL:从表中获取未包含的日期

php - 即使查询成功,SQL仍返回错误