2014-10-08 87 views
-3

我想將表單的值插入名爲company的數據庫表中。但是這個程序一再告訴我,我的查詢沒有得到執行。我可以知道爲什麼這樣嗎?爲什麼下面的PHP代碼沒有在數據庫中插入值?

我已存儲的形式的所有值到一個數組稱爲插入件和比我破滅陣列並將其命名爲newarray使得其在可插入到數據庫中的形式。

但這似乎不適用於我。請告訴我這裏有什麼問題?

<?php 
$host = "localhost"; 
$name = "root"; 
$password = ""; 
$db = "shopinz"; 
$con = mysqli_connect($host,$name,$password,$db); 
$insert = array(); 
$newarray = array(); 
if(mysqli_connect_errno()){ 
    echo("Cannot connect to the databse".mysqli_connect_errno()); 
    exit(); 
} 
else{ 
    if($_SERVER['REQUEST_METHOD'] == 'POST'){ 
     foreach($_POST as $value){ 
      if($value == $_POST['submit']){ 
       break; 
      } 
      else{ 
        array_push($GLOBALS['insert'],$value); 
      } 
     } 
     $newarray = implode(',',$insert); 
     $result = mysqli_query($con,"INSERT INTO company (company_name,company_number,company_address) VALUES($newarray)"); 
     if($result){ 
      echo("1 row added"); 
     } 
     else{ 
      echo("Query not executed"); 
     } 
    } 
} 
?> 
+1

** **危險:你是**易受[SQL注入攻擊(http://bobby-tables.com/)**,你需要[保衛](http://stackoverflow.com/questions/60174/best-way-to-prevent-sql-injection-in-php)自己從。 – Quentin 2014-10-08 12:48:54

+2

你爲什麼不看看你實際運行的查詢?爲什麼不使用'mysqli_error()'來找出數據庫對於你運行代碼的企圖所說的話? – Quentin 2014-10-08 12:49:31

+0

輸出所有錯誤。你的值沒有用''newarray''中的'''封裝,並且產生了錯誤的SQL代碼 – ljacqu 2014-10-08 12:49:35

回答

1

此行沒有任何意義:

array_push($GLOBALS['insert'],$value); 

把你的價值觀,你所需要的一個是$insert

unset($_POST['submit']); 
foreach($_POST as $value){ 
    $insert[] = "'".$con->real_escape_string($value)."'"; 
} 
$newarray = implode(',',$insert); 

注:我建議使用預處理語句來代替。

$insert = $con->prepare('INSERT INTO company (company_name,company_number,company_address) VALUES(?, ?, ?)'); 
$insert->bind_param('sss', $_POST['company_name'], $_POST['company_number'], $_POST['company_address']); 
$insert->execute(); 
-3

看你的代碼的問題,我可以看到的是在這裏:

foreach($_POST as $value){ 

在你的foreach你有$ _ POST,但你不要定義什麼斷定這對應該是$ _ POST [「東西」 ]

+0

'$ _POST'始終定義... http://php.net/manual/en/reserved.variables.post.php – NDM 2014-10-08 12:55:55

+0

我只是想幫助如果答案是不正確你卡恩指出我一個我可以學習的來源...就像@NDM那樣... – 2014-10-08 13:07:52

相關問題