前言。我決定讓這個社區維基。除了OP和其他訪問這個問題的人之外,我不想從中得到任何東西。
正如我在評論中所說的,你用錯誤的方式在那裏用逗號ownerid,
。
你需要做的是在陣列上使用implode並使用IN()
。
從https://stackoverflow.com/a/12151295/
$e = 0;
while($e<$num1){
$units = 0;
$r = 0;
$SO_Line_Item=mysql_result($result1,$e,"SO_Line_Item");
foreach ($Boxes[$e] as $a => $b)
{
$zzz[] = $Boxes[$e][$r];
$ce = count($Boxes[$e]);
$r++;
}
//end inner foreach
$products = implode(',', array_fill(0,$ce, '?'));
$db = new PDO('mysql:host=192.168.1.197 ;dbname=Tracking', $dbuser,$dbpass);
$stmt = $db->prepare("SELECT Box_Num,Timestamp,E3_SN,Assy_Status FROM Current_Box WHERE Box_Num IN($products)");
$stmt->execute($zzz);
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
}
unset($zzz);
$e++;
}
貸款以及從https://stackoverflow.com/a/2814703/
$ids = array(2, 4, 6, 8);
// prepare a string that contains ":id_0,..,:id_n" and include it in the SQL
$plist = ':id_'.implode(',:id_', array_keys($ids));
$sql = "SELECT * FROM someTable WHERE someId IN ($plist)";
// prepare & execute the actual statement
$parms = array_combine(explode(",", $plist), $ids);
$stmt = $PDO->prepare($sql);
$rows = $stmt->execute($parms);
從評論:
「你可能想使用關聯表而不是存儲信息的方式你正在存儲它 - Maximus2012「
正如在評論中提到,一些問題/答案從SO演示協會表的概念與複合主鍵一起:
Mysql : Association table
How to use an MySQL association table to return categories not currently assigned to an entry
如果OP決定採用這種結構,那麼需要更改查詢以利用LEFT JOIN
和/或使用IN
的子查詢條款。 SO上有很多例子。一,我可以用一個簡單的搜索找到(請忽略慢查詢部分,並期待在例子來說明這個概念):
MySQL - SELECT WHERE field IN (subquery) - Extremely slow why?
解決您的數據結構,這樣你就不會在一個字符串存儲整數外鍵名單。 –
@GordonLinoff你的意思是?我這樣做是因爲它是用戶的ID,但可以有幾個,所以我需要它們的列表,例如「1,2,3,4」 – Odin
您的表結構是什麼樣的? – Maximus2012