2015-10-13 101 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];