2015-10-13 68 views
-1

我有一个变量MySQL的插入多行从爆炸

$allnames = 'John,Peter,Maya'; 

,我试图检查每名在user表存在,如果它存在我想在另一个表中插入每个名称为一行。

$allnames = 'John,Peter,Maya'; 
$names = explode(",", $allnames); 

foreach($names as $name) 
{ 
    $checkusers = $db->query_read("SELECT username,userid FROM " . TABLE_PREFIX . " `user` WHERE username = '".$name."' "); 
    $results = $db->fetch_array($checkusers); 

    $db->query_write("INSERT INTO " . TABLE_PREFIX . " `invite_users` (username) VALUES ('".$results['userid']."') 
"); 

} 

解决办法:

$string = mysql_real_escape_string($_POST['userstag']); 
$arr = explode(",",$string); 

$sql = $db->query_read("SELECT username FROM " . TABLE_PREFIX . " `user` WHERE username IN ('".implode("', '", $arr) . "')"); 

while($r = $db->fetch_array($sql)) 
{  
    $sqli = $db->query_write("INSERT INTO " . TABLE_PREFIX . " invite_users (username) VALUES ('".$r['username']."') 
    ");  
} 
+0

您需要检查并返回SQL错误的吐涎。如果'TABLE_PREFIX'不是空格或空字符串,那么没有办法证明是有效的sql。 –

+1

这是'mysqli',PDO还是别的?由于有两个[SQL注入漏洞](http://bobby-tables.com/),所以你在这里遇到了严重问题,因为你的任何值都没有[正确转义](http://bobby-tables.com/php )。 – tadman

+0

@tadman,它是'MYSQL' – user3745594

回答

0

你可以试试下面的代码,如果该问题是与变量

$allnames = 'John,Peter,Maya'; 
$arr = explode(",",$allnames); 
$name_1=$arr[0]; 
$name_2=$arr[1]; 
$name_3=$arr[3];