前言。我决定让这个社区维基。除了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