2013-10-11 30 views
0

我試圖將產品信息插入到數據庫中,但我必須丟失一些東西。它不會在數據庫中插入任何內容,甚至不會顯示任何錯誤。插入到MySQL不起作用,沒有錯誤

我的代碼有什麼問題?

<?php 

    if(!empty($product_name)){ 
     if(!empty($product_category)){ 

     //////////////////////////////////////////////// 
     ///// connect to database 
     //////////////////////////////////////////////// 

     $dbc = new mysqli("localhost", "root", "password", "table"); 

     // Check connection 
     if (mysqli_connect_errno($dbc)) { 
      echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
     } 

     if (isset($_POST['product_name'])) { 

      $pid = ($_POST['thisID']); 
      $product_name = ($_POST['product_name']); 
      $product_category = ($_POST['product_category']); 
      $product_detail = ($_POST['product_detail']); 
      $product_price = ($_POST['product_price']); 
      $product_company = ($_POST['product_company']); 

      $query = "INSERT INTO product (product_name, product_category, product_price, product_detail,product_detail, product_company) 
       VALUES ('$product_name','$product_category','$product_price','$product_detail','$product_company')"; 

      $result= $this->mysqli->query($query) or die(mysqli_connect_errno()."Data cannot inserted"); 

      if($result){ 
       header('location:cp_product.php'); 
      } 

      mysqli_close($dbc); 
     } 
    }} 

?> 
+0

您很容易受到[SQL注入攻擊](http://bobby-tables.com)的影響。 –

+0

如果在查詢失敗時不打印'$ mysqli-> error',你怎麼知道沒有錯誤? – Barmar

+0

'$ this-> mysqli-> query'不應該是'$ dbc-> query'? – Barmar

回答

2

在你查詢你有添加product_detail柱兩次,應該有一個,爲五列是指5個值

product_detail,product_detail, 

INSERT INTO product (product_name, product_category, product_price, product_detail, product_company) 
VALUES ('$product_name','$product_category','$product_price','$product_detail','$product_company'); 
0

此行錯:

$result= $this->mysqli->query($query) or die(mysqli_connect_errno()."Data cannot inserted"); 

應該是:

$result = $dbc->query($query) or die ($dbc->error . "Data cannot be inserted"); 

如果你這樣做,你會得到錯誤,列列表不匹配VALUES名單,因爲你把product_detail在列列表中的兩倍。

0

我看到你叫你的數據庫「表」。
你的數據庫叫做「表」嗎? 先試試這個,並告訴我們你的錯誤:
不要混合procdeural代碼和obejct導向的代碼。檢查php.net的例子。 (現在刪除所有「ifs」。) $ dbc = new mysqli(「localhost」,「root」,「password」,「table」);

// Check connection 
if (mysqli_connect_errno()) 
    { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

$pid = ($_POST['thisID']); 
$product_name = ($_POST['product_name']); 
$product_category = ($_POST['product_category']); 
$product_detail = ($_POST['product_detail']); 
$product_price = ($_POST['product_price']); 
$product_company = ($_POST['product_company']); 

$query = "INSERT INTO product (product_name, product_category, product_price, product_detail, product_company) 
    VALUES ( '$product_name','$product_category','$product_price','$product_detail','$product_company')"; 

    echo "query: ".$query."<br>"; 
    mysqli->query($query); 

    $mysqli->close(); //object oriented. 
    ?> 
0

您需要在您設置的HTML表單變量內部使用DB連接,本例中爲$ dbc。

$pid = ($dbc, $_POST['thisID']); 
$product_name = ($dbc, $_POST['product_name']); 
$product_category = ($dbc, $_POST['product_category']); 
$product_detail = ($dbc, $_POST['product_detail']); 
$product_price = ($dbc, $_POST['product_price']); 
$product_company = ($dbc,$_POST['product_company']); 
0

沒人說!你如何通過你的連接傳遞你的查詢?

你應該有類似

$dbc->query($query) 

或者在你的情況,你在哪裏分配$this->mysqli

不要將面向對象的風格與程序風格混合在一起,因爲這可能會導致您在將來混淆。

選擇一個並繼續編碼。如果你可以選擇OOP。

GOOD LUCK

相關問題