2013-07-16 46 views
1
$count = count(array_filter($_POST["materials"])); 
for($I = 0; $I < $count; $i++) 
{ 
    $insert = mysqli_query($con, "INSERT INTO table1 (uid, materials, num, cost) 
      VALUES 
      (
      '$_POST[uid]', 
      '$_POST[material][$i]', 
      '$_POST[num][$i]', 
      '$_POST[cost][$i]', 
      )");   
} 

如果我使用echo $_post[materials][$i]它給了我正確的結果,但在數據庫中,就是將類似array[0]MySQL的插入注意:數組字符串轉換

似乎我的$insert是不正確的。但我沒有任何想法插入它。任何想法如何做到這一點?

+0

'echo'您的查詢以查看替換變量的確切原始mysql查詢。 – zerkms

+0

你的表格看起來像什麼 – DevZer0

+0

有3個表格材料,數量,成本。每個人乘以5次。 –

回答

-1

你可以(而且必須)使用一對周圍的表達式花括號,並還引用數組鍵:

$insert = mysqli_query($con, "INSERT INTO table1 (uid, materials, num, cost) 
      VALUES 
      (
      '{$_POST['uid']}', 
      '{$_POST['material'][$i]}', 
      '{$_POST['num'][$i]}', 
      '{$_POST['cost'][$i]}', 
      )"); 

參見php.net > Strings

這是因爲PHP的字符串變量分析僅限於單維數組。對於兩個或多個維度,您需要使用大括號來指示PHP變量的結尾。同樣適用於使用字符串鍵訪問數組。

您還需要引用字符串數組鍵,因爲它們是實際的字符串,你應該始終引用他們正確


另外請注意,該代碼是好的,如果它不是生產代碼。但是,您應該知道,您的代碼會導致一個名爲SQL Injection的嚴重安全漏洞。如果這是更嚴重的工作,則應參考鏈接並修復安全漏洞。

+0

'注意:使用undefined常量' –

+0

@moogiienhtsogt在原始代碼中有另一個錯誤。在編輯的答案中指出它。 –

+0

非常感謝你。 –

0
$sql_template = "INSERT INTO table1 (uid, materials, num, cost) 
     VALUES(%d, %s, %s, %s)")"; 

$insert = mysqli_query($con, "INSERT INTO table1 (uid, materials, num, cost) = 
sprintf($sql_template, $_POST[uid], $_POST[material][$i], $_POST[num][$i], $_POST[cost][$i]); 

mysqli_query($con,$insert); 

對於sprintf的更多詳情,請訪問this link數據類型等

相關問題