我想要做这样的事情如何在PHP中的数组使用
---- SQL输出mysql数据库中的数据----
名TEXT
b
删除C项
$arr = ["a","b","c","d"];
foreach($arr as $key=>$val){
$query = "select count(*) from mydata where name = $val";
$count = xxxx($query);
if($count)unset($arr[$key]);
}
而且$ ARR会
a,d
任何简单的方法来做到这一点,但不检查每一个元素?
---编辑---
我想我解决我的问题...我得到了一些来自mrlore是使用具有启发。
$arr = ["a","b","c","d"]; /* make the string inside arr safe for query */
$val = array_map(function($val){return "'$val'";},$arr);
$q = "select name from mydata where name in (" . implode(',',$val) .")";
$all = xxxxx($q);
$arr = array_diff($arr,$all);
这花了我0.8秒。使用我以前的方式需要46秒,RST方式需要2秒。
---编辑----
我有超过20万行数据在我的数据库,所以我希望有一个更好的方式来优化它。
--re MrLore--
PS:我不知道如何使用计算器张贴comments..so我只是编辑自己的帖子。
我已经在我的mysql工作台上试过了,但它似乎不适用于我。
select name from mydata
where name in("a","b","c","d")
having count(name) = 0
- 没有返回
select name from mydata
where name in("a","b","c","d")
having count(name) > 0
集中SQL语句和用户输入是危险的(SQL注入)尝试使用预准备语句。看看php PDO – 2014-12-13 14:02:23
在你的问题中,所有这些虚线和评论是什么?清理它,所以它有道理? – MightyPork 2014-12-13 14:02:25
@MightyPork对不起。我是新的stackoverflow.I不知道如何使用这些格式化。 – stny 2014-12-13 16:11:39