Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在sql语句中使用sql数据库中的数组_Php_Mysql_Arrays - Fatal编程技术网

Php 如何在sql语句中使用sql数据库中的数组

Php 如何在sql语句中使用sql数据库中的数组,php,mysql,arrays,Php,Mysql,Arrays,我可能完全走错了方向,但我想从数据库中获取一个数据数组,然后在另一个SQL语句中使用该数组 这是我目前的代码: $result = mysql_query($query_friend_club_count) or die(mysql_error()); while($row = mysql_fetch_array($result)){ $row['idPerson']. " - ". $row['idFriend']; $idFriend = $row['idFriend'];

我可能完全走错了方向,但我想从数据库中获取一个数据数组,然后在另一个SQL语句中使用该数组

这是我目前的代码:

  $result = mysql_query($query_friend_club_count) or die(mysql_error());

  while($row = mysql_fetch_array($result)){
  $row['idPerson']. " - ". $row['idFriend'];
  $idFriend = $row['idFriend'];
  $array = $idFriend',';

  $query_friends = "SELECT * FROM whosout WHERE idPerson IN ('$array')";
  $query_friends_run = mysql_query($query_friends);
  $friendCounter = mysql_num_rows($query_friends_run);

  echo $friendCounter;
  } 
我得到一个错误:

语法错误,意外的T_常量\u封装的\u字符串

我不知道这是否有帮助


任何建议都会很有帮助,因为我已经在这上面呆了很久了

您犯了一个小错误:

 $array = $idFriend . ','; //There should be a period here.

您犯了一个小错误:

 $array = $idFriend . ','; //There should be a period here.

您也可以先将它们分组,而不是逐个查询:

$array = array();
while($row = mysql_fetch_array($result)){
    $array[] = mysql_escape_string($row['idFriend']); // escape just to be sure
}

$array = "'".implode("','", $array) . "'"; // comma separated values

$query_friends = "SELECT * FROM whosout WHERE idPerson IN ($array)";
$query_friends_run = mysql_query($query_friends);
$friendCounter = mysql_num_rows($query_friends_run);
echo $friendCounter;
或者,如果此列为INT,则不需要引号:

$array = implode(', ', $array);

您也可以先将它们分组,而不是逐个查询:

$array = array();
while($row = mysql_fetch_array($result)){
    $array[] = mysql_escape_string($row['idFriend']); // escape just to be sure
}

$array = "'".implode("','", $array) . "'"; // comma separated values

$query_friends = "SELECT * FROM whosout WHERE idPerson IN ($array)";
$query_friends_run = mysql_query($query_friends);
$friendCounter = mysql_num_rows($query_friends_run);
echo $friendCounter;
或者,如果此列为INT,则不需要引号:

$array = implode(', ', $array);
正确的方法是:

$arr = array();
while($row = mysql_fetch_array($result)){
  $idFriend = $row['idFriend'];
  $array[] = $idFriend;
}

// then implode that array using IN sql statement.
$query_friends = "SELECT * FROM whosout WHERE idPerson IN (implode(','$arr))";
正确的方法是:

$arr = array();
while($row = mysql_fetch_array($result)){
  $idFriend = $row['idFriend'];
  $array[] = $idFriend;
}

// then implode that array using IN sql statement.
$query_friends = "SELECT * FROM whosout WHERE idPerson IN (implode(','$arr))";

您正在查询的两个表是否在同一个数据库中?这似乎应该是一个带有连接的单个查询,而不是通过构建数组和执行多个查询来胡闹。另外,第二个查询应该在
while
循环中吗?您能告诉我们
$query\u friend\u club\u count
是什么吗。它们不再得到维护,而是在使用。看到了吗?而是学习,并使用或。将帮助您决定哪一个。您的错误不在第行
$array=$idFriend'?更改为
$array=$idFriend','您正在查询的两个表是否在同一个数据库中?这似乎应该是一个带有连接的单个查询,而不是通过构建数组和执行多个查询来胡闹。另外,第二个查询应该在
while
循环中吗?您能告诉我们
$query\u friend\u club\u count
是什么吗。它们不再得到维护,而是在使用。看到了吗?而是学习,并使用或。将帮助您决定哪一个。您的错误不在第行
$array=$idFriend'?更改为
$array=$idFriend','仍然是错误的。最后一个单词后面不应该有逗号。在放入查询之前,您可能需要
trim
字符串。这是语法和逻辑上的许多错误之一。指出这个错误没有帮助,谢谢你的回复!现在我得到了4个1。什么是计算1的最好方法?实际上,不应该有逗号。不过,它还是错的。最后一个单词后面不应该有逗号。在放入查询之前,您可能需要
trim
字符串。这是语法和逻辑上的许多错误之一。指出这个错误没有帮助,谢谢你的回复!现在我得到了4个1。什么是计算1的最佳方法?实际上,不应该有逗号。回答得好。还值得注意的是,如果ID不是数字,则应转义数组中的值。复杂的注入攻击可以使用转义的输入进入数据库,然后利用这样的查询。或者,如果一个无辜的值包含字符串分隔符,则可能会导致错误。回答得好。还值得注意的是,如果ID不是数字,则应转义数组中的值。复杂的注入攻击可以使用转义的输入进入数据库,然后利用这样的查询。或者,如果无辜值包含字符串分隔符,则可能会导致错误。