php mysql模糊查询数组,php – 使用数组的MySQL查询

我正在尝试使用数组查询MySQL数据库,但我遇到了麻烦!

我有一个名为clients的表,我希望能够从’sector’列等于$sectorlink的所有行中选择’name’.

然后,我想将所有名称放入一个数组,以便我可以执行下一个查询:从另一个表中选择所有行,其“client”列等于第一个查询返回的名称之一.我做错了,因为它返回致命的SQL错误.我对所有变量感到困惑!

$sectorlink和$connection是在此代码之外定义的唯一变量

有什么建议么?

$query1 = "SELECT name FROM clients WHERE sector = '$sectorlink'";

$clientresult = mysql_query($query1, $connection) or trigger_error("SQL", E_USER_ERROR);

while($row = mysql_fetch_array($clientresult)){

foreach($row AS $key => $value){$temp[] = '"'.$value.'"';}

$thelist = implode(",",$temp);

$query = "SELECT count(*) FROM studies WHERE client IN ($row) ORDER BY (date) desc";

$result = mysql_query($query, $connection) or trigger_error("SQL", E_USER_ERROR);

}

解决方法:

第二个查询应该使用$thelist而不是$row,它应该在while循环之外.处理单行时不需要foreach循环.您可以使用简单的$row [0]访问$row中的名称.像这样(未经测试):

$query1 = "SELECT name FROM clients WHERE sector = '$sectorlink'";

$clientresult = mysql_query($query1, $connection) or trigger_error("SQL", E_USER_ERROR);

while($row = mysql_fetch_array($clientresult)){

$temp[] = '"'.$row[0].'"';

}

$thelist = implode(",",$temp);

$query = "SELECT count(*) FROM studies WHERE client IN ($thelist) ORDER BY (date) desc";

$result = mysql_query($query, $connection) or trigger_error("SQL", E_USER_ERROR);

注意:请注意您的代码非常容易受到SQL injection attacks的攻击.它适用于测试或内部开发,但如果此代码将运行Fort Knox网站,您将需要修复它.只是一个FYI.

标签:php,arrays,mysql

来源: https://codeday.me/bug/20190923/1814385.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值