MySQL查询使用数组
我正在尝试使用数组查询MySQL数据库,但是遇到了麻烦!
我有一个名为客户的表,我希望能够从“扇区”列等于$ sectorlink的所有行中选择“名称”。
然后,我想将所有名称放入数组,以便执行下一个查询:从另一个表中选择所有行,这些表的“
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
not
$row
,并且它应该在while
循环之外。的foreach
处理单个行当环是不必要的。您可以使用$row
简单的访问名称$row[0]
。像这样(未经测试):
$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注入攻击的攻击。测试或内部开发都很好,但是如果此代码将要运行Fort Knox网站,那么您将需要对其进行很多修复。仅供参考。:-)
以上是 MySQL查询使用数组 的全部内容, 来源链接: utcz.com/qa/436349.html