我对MySQL IN Clause有一个问题,我不知道如何启动代码。
原始
$merchant_separated = implode(",", $array);
$sql = mysql_query("SELECT * FROM assigned_id WHERE id NOT IN ($merchant_separated) AND viewable = 'True'");
我现在在数据库表中的内容是以下代码:
$sql = mysql_query("SELECT * FROM product_purchased");
whil($r=mysql_fetch_array($sql))
$r['merchantid_imploded'] ='9,6,2,3,5,4,1,7,8'
$r['productnumber'] = 'Fjduensd'
$r['Title'] = 'Animation Csr'
$r['Product Name'] = 'Inwards Development'
我想要做的就是像下面的代码一样获取。它无法正常工作,因为在查询中有一个字段merchantid_imploded 9,6,2,3,5,4,1,7,8
,无法使用逗号获取clientid。
$clientid = 2
$sql = mysql_query("SELECT * FROM product_purchased WHERE merchantid_imploded IN ($clientid) ");
我想要做的只是通过购买此产品来获取此商家
请告知
答案 0 :(得分:2)
嗯,你对merchantid_imploded的设计会给你带来很多麻烦。您应该将这些数字存储在一个单独的表中,每行一个,以及产品编号。查找术语“数据库规范化”以了解有关此内容的更多信息。在为此设计提交更多编程工作之前,解决此问题的最佳时间是 now 。 (同时,请考虑使用参数化查询来保护您的代码免受SQL注入攻击。)
也就是说,MySQL(SQL数据库中唯一的)提供了许多功能,让您可以按照自己的意愿行事。一种可能性是FIND_IN_SET:
WHERE FIND_IN_SET($clientid, merchantid_imploded) > 0
此外,普通的旧IN应该在MySQL中工作,假设您将参数放在正确的位置:
WHERE $clientid IN merchantid_imploded