Php 如何在sql语句中使用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'];
$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不是数字,则应转义数组中的值。复杂的注入攻击可以使用转义的输入进入数据库,然后利用这样的查询。或者,如果无辜值包含字符串分隔符,则可能会导致错误。