我正在尝试使用数组查询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);
}
Run Code Online (Sandbox Code Playgroud)
第二个查询应使用$thelist不$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);
Run Code Online (Sandbox Code Playgroud)
警告:请注意您的代码非常容易受到SQL注入攻击.这对于测试或内部开发来说很好,但是如果这个代码将运行Fort Knox网站,那么你将需要修复它.只是一个FYI.:-)
| 归档时间: |
|
| 查看次数: |
10249 次 |
| 最近记录: |