2012-04-19 161 views
2

我很難過。我正在嘗試使用PHP和Mysql執行INSERT INTO。PHP Mysql插入失敗,沒有錯誤

這裏是SQL語句,它成功在phpMyAdmin:

INSERT INTO purchase_orders VALUES (
    DEFAULT, 
    '501', 
    '80999', 
    '149179', 
    'EB-0408898', 
    '1', 
    'Thompson Center Barrel Encore 26\" Stainless Steel Fluted 35 Whelen 4767', 
    '294.43', 
    '4767', 
    'UPS Ground', 
    '11.61', 
    'LA', 
    'P', 
    '1', 
    '264.99', 
    DEFAULT, 
    DEFAULT 
) 

這是我在運行SQL PHP語句:

$sql = "INSERT INTO purchase_orders VALUES (
    DEFAULT, 
    '".mysql_real_escape_string($po_num)."', 
    '".mysql_real_escape_string($order_id)."', 
    '".mysql_real_escape_string($product_id)."', 
    '".mysql_real_escape_string($product_code)."', 
    '".mysql_real_escape_string($amount)."', 
    '".mysql_real_escape_string($product)."', 
    '".mysql_real_escape_string($price)."', 
    '".mysql_real_escape_string($mfg_code)."', 
    '".mysql_real_escape_string($shipping_method)."', 
    '".mysql_real_escape_string($shipping_cost)."', 
    '".mysql_real_escape_string($s_state)."', 
    '".mysql_real_escape_string($status)."', 
    '".mysql_real_escape_string($dist_code)."', 
    '".mysql_real_escape_string($dist_cost)."', 
    DEFAULT, 
    DEFAULT)"; 
mysql_query($sql, $dbc); 
echo mysql_errno($dbc) . ": " . mysql_error($dbc). "\n"; 

我完全困惑爲什麼插入語句不工作PHP。任何幫助將不勝感激。

感謝,

克里斯·愛德華茲

我已經試過這個SQL代碼也具有相同的結果...

INSERT INTO purchase_orders(po_num, order_id, product_id, product_code, amount, product, price, mfg_code, shipping_method, shipping_cost, s_state, status, dist_code, dist_cost) VALUES ('501','80999','149179','EB-0408898','1','Thompson Center Barrel Encore 26\" Stainless Steel Fluted 35 Whelen 4767','294.43','4767','UPS Ground','11.61','LA','P','1','264.99') 

大家的幫助是最欣賞的,它給了我很大的想法變成什麼問題可能是。我發現我試圖在InnoDB表上使用mysql_query,不起作用。

再次感謝!

+0

與mysqli/pdo_mysql一樣嗎?或者只是可以使用默認的mysql擴展嗎?表結構如何?是$ dbc的資源? – Hajo 2012-04-19 17:57:54

+1

你可以在調用mysql_query之前回顯$ sql語句,只是爲了證明部分代碼實際上被調用了嗎? – bumperbox 2012-04-19 17:58:59

+0

這就是我顯示上面的SQL代碼框。 – 2012-04-19 18:22:18

回答

0

不要在字段中使用DEFAULT

INSERT INTO purchase_orders (<colname1>,<colname2>,.....) VALUES ('501','80999','149179','EB-0408898','1','Thompson Center Barrel Encore 26\" Stainless Steel Fluted 35 Whelen 4767','294.43','4767','UPS Ground','11.61','LA','P','1','264.99') 

通過插入值的列關聯而是使用它像這樣。

0

如果您試圖讓它插入默認值,您可以將這些列的值設置爲null。像這樣:

INSERT INTO purchase_orders VALUES (null, '501','80999','149179','EB-0408898','1','Thompson Center Barrel Encore 26\" Stainless Steel Fluted 35 Whelen 4767','294.43','4767','UPS Ground','11.61','LA','P','1','264.99', null, null) 

數據庫會發現它需要將默認值放在您要求爲null的列中。

+0

INSERT INTO purchase_orders VALUES(NULL,'501','80999','149179','EB-0408898','1','Thompson Center Barrel Encore 26 \「Stainless Steel Fluted 35 Whelen 4767','294.43 ','4767','UPS Ground','11.61','LA','P','1','264.99',NULL,NULL) - 適用於phpmyadmin,不適用於PHP並且仍然沒有錯誤 – 2012-04-19 18:21:08

+0

它是否總是用默認值替換NULL,或者只有當字段指定了NOT NULL? – octern 2012-04-19 18:39:04

0

你能夠插入任何東西到你的數據庫?你的代碼的mysql_query($sql, $dbc);部分是否工作?

沒有必要將缺省值插入到表中,畢竟它們是默認值。當然,這是對你桌子結構的一個很好的提醒,但我不會說。

否則,如果你喜歡VIPIN JAIN建議一切都應該工作。定義您要插入值的列。如果colum的數據類型是整數,您可以從查詢中保留單引號。

仍然很奇怪,你沒有得到任何錯誤信息。你確定你的數據庫連接正在工作嗎?


更新。嘗試這個。命名列並刪除real_escape_string()函數。如果這樣做,則添加它或在連接查詢之前清理變量。如果這不起作用,請仔細檢查值和表結構中的無效值。在real_escape_string()函數之前和之後回顯您要分配給$sql的值。也許它做了一些奇特的事情。

$sql = "INSERT INTO `purchase_orders` (`column1`,`column2`,`column3`,`column4`,'"; 
$sql .= "`column5`,`column6`,`column7`,`column8`,`column9`,`column10`,"; 
$sql .= "`column11`,`column12`,`column13`,`column14`)"; 
$sql .= " VALUES ('{$po_num}','{$order_id}','{$product_id}',"; 
$sql .= "'{$product_code}','{$amount}','{$product}','{$price}',"; 
$sql .= "'{$mfg_code}','{$shipping_method}','{$shipping_cost}',"; 
$sql .= "'{$s_state}','{$status}','{$dist_code}','{$dist_cost}')"; 
+0

我工作,我有一個查詢之前,它工作正常 – 2012-04-19 18:24:31

+0

@Chris檢查我更新的答案。 – 2012-04-19 18:46:02