我想要做這樣的事情如何在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