2013-07-17 50 views
-2

我試圖插入一些值,以我的表,但我不斷收到以下通知時,「通知陣列字符串轉換」錯誤插入行如下代碼:PHP:插入到SQL

if ((isset($_POST['inviter'], $_POST['opponent'])) && ($_POST['inviter'] != '' && $_POST['opponent'] != '')) { 
    $inviter = $_POST['inviter']; 
    $opponent = $_POST['opponent']; 
    $now = time(); 
    if ($mysqli->query("INSERT INTO invitations (inviter_user_id, invited_user_id, time) VALUES ('$inviter','$opponent','$now')")) { 
     return; 
    } 
} 
+0

邀請對手和對手是什麼類型? – StephenTG

+1

將您的查詢放入一個字符串中並在通過mysqli運行之前將其回顯出來。它顯示了什麼? – aynber

+2

http://xkcd.com/327/ – GordonM

回答

2

您是否嘗試過var_dumping $ inviter和$ opponent來查看它們是什麼數據類型?嘗試只是將它們投射到(字符串)。另外,在mysqli中使用帶參數的查詢是個好主意。就目前而言,你已經開放了SQL注入。

+0

我現在已經看到第二個參數確實是'array',所以生病嘗試改變它。你能指定關於'參數化查詢'嗎?它是什麼 ?謝謝 – SagiLow

+2

@SagiLow試試這個:http://php.net/manual/en/mysqli.quickstart.prepared-statements.php – euantorano

+0

謝謝你.... – SagiLow

2

打印變量輸出&你就會知道問題出在哪裏:

print_r($inviter); 
print_r($opponent); 

確保到MySQL插入之前從陣列中獲取價值。