2016-03-28 29 views
0

我使用下面的代码传递数组值到MySQL查询,但数组字符串转换错误会阵列串皈依错误在PHP

$sql =mysql_query("SELECT userId from groupmembers where groupId='$groupId'"); 
$bjson = array(); 
$i = 0; 
while($result=mysql_fetch_assoc($sql)) 
{ 
    $bjson[$i]['userId'] = $result['userId']; 

    $i++; 
} 

$query = "SELECT firstName 
    FROM users 
    WHERE userId IN('" . implode("','", $bjson) ."')"; 
+0

[你的脚本是在对SQL注入攻击的风险。(http://stackoverflow.com/questions/60174/how-可以防止SQL注入在PHP) –

+0

请[停止使用'mysql_ *'功能](http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-在-PHP)。 [这些扩展](http://php.net/manual/en/migration70.removed-exts-sapis.php)已在PHP 7中删除。了解[编写]​​(http://en.wikipedia.org/ wiki/Prepared_statement)语句[PDO](http://php.net/manual/en/pdo.prepared-statements.php)和[MySQLi](http://php.net/manual/en/mysqli.quickstart .prepared-statements.php)并考虑使用PDO,[这真的很简单](http://jayblanchard.net/demystifying_php_pdo.html)。 –

+0

该死的弃用和删除功能了! – rray

回答

6

无需两个查询和循环的只是使用

SELECT firstName 
    FROM users 
    WHERE userId IN(SELECT userId from groupmembers where groupId='$groupId') 

注: - MySQL是不推荐改为使用库MySQLi或PDO

阅读How can I prevent SQL injection in PHP?

+0

谢谢你的工作 –

+0

找你!欢迎 – Saty

1

可以使用查询联接,以节省循环

SELECT u.firstName FROM users u JOIN groupmembers gm ON gm.userID = u.userID WHERE gm.groupID='$groupId'