php - 使用数组的 MySQL 查询

标签 php mysql arrays

<分区>

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

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

然后我想将所有名称放入一个数组中,以便我可以执行下一个查询:从另一个表中选择所有行,其“客户”列等于从第一个查询返回的名称之一。我做错了什么,因为它返回了一个致命的 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 网站,您将需要对其进行大量修复。仅供引用。 :-)

关于php - 使用数组的 MySQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1101662/

相关文章:

Javascript 缩略图弹出窗口

php - .htaccess 从站点根目录重定向到公用文件夹,在 URL 中隐藏 "public"?

mysql - 从父值计算子成员

java - 在 Java 中,写入文件比迭代数组慢多少?

arrays - Excel VBA 使用数组加速代码

javascript - 在javascript中使用索引数组对数组进行索引

php - 当条件取决于一个表中的某些列时如何查找相交行

php - 动态行中的MySQL数据透视表查询

mysql - 检查MYSQL中的记录是否存在

mysql - 选择在其他表中有不止一次经验的用户