-1

我有一个关于 MySQL IN 子句的问题,我不知道如何启动代码。

原来的

$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) ");

我想做的只是用购买的这个产品来获取这个商家

请指教

4

1 回答 1

2

好吧,你的 Mercerid_imploded 设计会给你带来很多麻烦。您应该将这些数字与产品编号一起存储在一个单独的表中,每行一个。查找术语“数据库规范化”以了解更多信息。解决此问题的最佳时间是现在,在您为此设计投入更多编程工作之前。(同时,考虑使用参数化查询来保护您的代码免受 SQL 注入攻击。)

也就是说,MySQL(在 SQL 数据库中是独一无二的)提供了许多功能,让您可以随心所欲。一种可能性是 FIND_IN_SET:

WHERE FIND_IN_SET($clientid, merchantid_imploded) > 0

此外,假设您将参数放在正确的位置,普通的旧 IN 应该在 MySQL 中工作:

WHERE $clientid IN merchantid_imploded
于 2012-04-18T02:44:41.543 回答