2013-01-08 249 views
3

我有這個代碼,所以通過PHP在MySQL中的表中插入值。我嘗試了所有可能的插入語法,它不插入數據...這是我使用的代碼。PHP MySQL INSERT沒有插入也沒有顯示任何錯誤

$param = "xyzxyz"; 
$param1 = "sdfdfg"; 
$sql = "INSERT INTO trail (User_Name, Quiz_ID) VALUES ('".$param."','".$param1."')"; 
$result = $mysql->query($sql); 
if($result) 
    echo "successful"; 
else 
    echo mysql->error; 
if(mysql->errno==0) 
    echo "successful" 
else 
    echo mysql->error; 

我甚至嘗試下面的SQL語法

"INSERT INTO trail (User_Name, Quiz_ID) VALUES ('$param1','$param1')"; 

"INSERT INTO `trail` (`User_Name`, `Quiz_ID`) VALUES ('$param1','$param1')"; 

,我嘗試了其他一些他們沒有任何東西插入到表中。這是MySQL中的表格;

trail 

User_Name varchar(35) 
Quiz_ID varchar(35) 

它不插入任何東西,也不顯示任何錯誤。我有正確的數據庫連接,因爲我可以從表中選擇。它只是插入是棘手的。

任何幫助將不勝感激。

感謝

+1

表上沒有插入權限? – boruch

+1

你使用mysqli還是mysql? –

+0

同樣在代碼中,它表示Trailnswer在表中拖尾 – boruch

回答

0

我的表是InnoDB表,當我將表更改爲MyISAM時插入工作正常。那麼我從來沒有遇到過這個問題。那麼暫時做了這個訣竅。

如果我想使用InnoDB引擎進行交易?我怎樣才能讓PHP能夠在InnoDB表中插入值?任何人有任何建議?我使用WAMP服務器,MySQL版本是5.5.24。而且我確實在my.ini中更改了InnoDB conf,但是這似乎也不起作用?

+0

您是否可以對來自PHP的Innodb表執行SELECTS選擇? – DWright

+0

另外,您的error_reporting設置爲? – DWright

+0

是的,我可以選擇和error_reporting = E_ALL – fftoolbar

2

檢查MySQLi :: $錯誤號第一。

if(mysql->errno==0) 
    echo "successful" 
else 
    echo mysql->error; 
+0

是的,我使用MySQLi和mysql-> error()顯示沒有錯誤...這是令人沮喪的...不知道我要去哪裏錯了。 – fftoolbar

+0

那你可以使用if(mysql-> errno == 0)嗎? –

+0

是的,我使用if(mysql-> errno == 0)..仍然沒有任何反應......沒有錯誤,也沒有插入。 – fftoolbar

0

僅供參考,您將插入$ param1兩次。

你也沒有';'回聲「成功」後。

我建議你清理代碼示例,然後再試一遍,並讓我們知道。

觀光清理

  1. $sql = "INSERT INTO trail (User_Name, Quiz_ID) VALUES ('$param','$param1')"; 你並不需要連接字符串中的串連的變量,可以插值。但是,實際上應該使用PDO和準備好的語句來避免SQL注入的可能性。
  2. 添加缺失的;
  3. 把第一次檢查if(mysql->errno==0)在(除非你打算切換到PDO這個東西)。
  4. 修復mysql->errormysql->error()
  5. 也許從評論的其他一些東西。
+0

是的,這是錯別字...但即使我輸入$參數和$ param1 doesnot插入任何東西。我不認爲插入相同的值不應該是一個問題。謝謝 – fftoolbar

+0

我更新了我的答案,總結了一些需要修復的問題。不確定這些解決方案能否解決您的問題,但在解決問題之前,您不會在尋找真正問題方面取得進展,特別是在此處試圖提供幫助的人員的基礎上,未經校正的代碼。 – DWright

+1

你可能會想:「爲什麼修復這些,如果他們不是**修正」?但是直到你做完你就像有人在城市裏要求一個番茄醬在他們臉上的方向。人們應該在城市中給你方向,但他們完全被番茄醬分心。如果你清理代碼(抹掉番茄醬),人們可以專注於真正的問題。 – DWright

1

我所做的是,如果你沒有安裝調試器,只是讓它發送電子郵件給你的查詢。通過這種方式,您可以查看最終查詢的內容,並且如果您有權訪問諸如phpMyAdmin之類的內容,請嘗試手動運行查詢並查看會發生什麼情況。另一件事,確保你正確地搜索你插入的記錄,如果你正在使用一個搜索查詢,因爲記錄的數量確保WHERE條件是正確的,那已經燒了我幾次。

編輯 名字周圍可能沒有符號。我要運行我所有的MySQL查詢,如

`nameOfThing` 

,而不是僅僅nameOfThing

$param = "xyzxyz"; 
$param1 = "sdfdfg"; 
$sql = "INSERT INTO `trail` (`User_Name`, `Quiz_ID`) VALUES ('".$param."','".$param1."')"; 
$result = $mysql->query($sql); 
if($result) 
    echo "successful"; 
else 
    echo mysql->error; 
if(mysql->errno==0) 
    echo "successful" 
else 
    echo mysql->error; 
+0

是的,我也運行了PHPMyAdmin的代碼,它從那裏工作完全正常,我沒有調試查詢它工作正常。 – fftoolbar

+0

好的,是$ mysql-> query($ sql)任何自定義實現還是ORM的一部分? – b729sefc

0

好吧,如果下面的代碼不會產生錯誤並顯示1個受影響的行,最有可能您正在尋找的結果在錯誤的數據庫中。

ini_set('display_errors', 1); 
error_reporting(E_ALL); 

$sql = "INSERT INTO trail (User_Name, Quiz_ID) VALUES ('testing','1')"; 
$mysql->query($sql); 
var_dump($mysql->error,$mysql->affected_rows); 
+0

沒有錯誤和0行受到影響,以及NULL具體 – fftoolbar

-1

如果有人在類似的問題上運行試試這個

$param = "xyzxyz"; 
$param1 = "sdfdfg"; 
$sql = "INSERT INTO trail (User_Name, Quiz_ID) VALUES ('".$param."','".$param1."')"; $result = $mysql_query($sql); if($result){ echo "successful";} else { echo " not successful;} 

3

剛一說明:

我有一個類似的問題---插入查詢工作的phpMyAdmin,但不工作的PHP和不發出任何錯誤(結果是真實一直)。

的原因是,我開始交易,但忘了提交它...

$mysqli->autocommit(FALSE); 

$mysqli->query("START TRANSACTION"); 

永遠不要忘記這一點:

$mysqli->commit(); 

這是一個愚蠢的錯誤,我知道,但我非常專注於查詢神祕事件,因此我忘記了上面幾行的交易聲明。

相關問題