2016-02-26 49 views
0

我在PHP中製作了一個處理某些產品價格列表的系統。但是試圖在數據庫中插入數據什麼也不做。這段代碼的錯誤在哪裏?它根本沒有插入到數據庫中...mysqli沒有在PHP上插入

它甚至可以打印出 「OK」,但不插入... :(

<?php 

include_once("../config.inc.php"); 
include_once("../mysql_connect.inc.php"); 

$solicitante = null; 
$ccusto = null; 
$data = null; 
$solicitante = null; 
$ccusto = null; 
$obs = null; 
$empresa1 = null; 
$empresa2 = null; 
$empresa3 = null; 
$vendedor1 = null; 
$vendedor2 = null; 
$vendedor3 = null; 
$prazo = null; 
$empresa_id = null; 
$obs2 = null; 
$fechado = null; 
$frete1 = null; 
$desconto1 = null; 
$prazo_pagamento1 = null; 

$sql = "INSERT INTO $table_pedidos (data, solicitante, ccusto, obs, empresa1, empresa2, empresa3, vendedor1, vendedor2, vendedor3, prazo, empresa_id, obs2, fechado, frete1, desconto1, prazo_pagamento1) ". 
"VALUES (NOW(), ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; 

if ($stmt = $mysql_db->prepare($sql)) { 
    $stmt->bind_param("sissssssssisisss", $solicitante, $ccusto, $obs, $empresa1, $empresa2, $empresa3, $vendedor1, $vendedor2, $vendedor3, $prazo, $empresa_id, $obs2, $fechado, $frete, $desconto, $prazo_pagamento1); 
    $stmt->execute(); 
    $pedido_id = $mysql_db -> insert_id; 
    $stmt->close(); 
    print 'ok'; 
} else { 
    print 'erro'; 
} 

?> 
+1

一些這方面的更多信息,請參閱這些以下鏈接http://php.net/manual/en/mysqli.error.php和http://php.net/manual/en/function.error-reporting.php 並將其應用於您的代碼。 –

+1

附近綁定參數你有16個參數,在你的查詢buin有17個參數 –

+1

,你沒有設置$ table_pedidos –

回答

2

根據數據庫模式,某些值可能沒有設置默認值,因此如果嘗試插入某些內容而不指定所有列(即使使用虛擬值),查詢也會失敗。

要麼爲所有列設置默認值在數據庫中找到,或者在查詢中指定它們全部。

在更換:

$stmt->execute(); 

有:

if(!$stmt->execute()){ 
    trigger_error("there was an error....".$mysql_db->error, E_USER_WARNING); 
    } 

會標誌着一個數據庫錯誤。

在我以前的問題之一Mysqli INSERT not working unless all columns are present

+0

我太想你了lol –

+0

@ Fred-ii-嘿,是的,我在寫作之後注意到了這個評論。謝謝 – aron9forever

+1

不客氣。我希望你不介意我編寫的[編輯](http://stackoverflow.com/revisions/35656475/2)。 –

0

你能試試嗎?

$mdate =date("Y-m-d H:i:s"); 
$insert = $mysqli->prepare("INSERT INTO table (name,date) VALUES (?,?)"); 
$insert->bind_param("ss", $a_name $mdate); 
$insert->execute(); 
+0

它的工作...... –

+1

當然,*「那」*工作。但是,它沒有回答關於解決方案的問題,以至於「爲什麼」它失敗了。這裏的實際解決方案是我對OP的評論,[這是一個。](http://stackoverflow.com/questions/35655450/mysqli-not-inserting-on-php?noredirect=1#comment58992369_35655450) –

+0

和*「試試這個「*真的留給意見。 –