2012-05-14 23 views
0

在PHP腳本,我已經嘗試的INSERT語句幾種不同的方式:爲什麼我的SQL插入語句無法通過我的PHP腳本執行?

$query = "INSERT INTO table (charfield,charfield,intfield,decimalfield) VALUES ('$stringvar','$stringvar',$intvar,$decimalvar)"; 
$query = "INSERT INTO table (charfield,charfield,intfield,decimalfield) VALUES ('".$stringvar."','".$stringvar."',".$intvar.",".$decimalvar.")"; 
$query = 'INSERT INTO table (charfield,charfield,intfield,decimalfield) VALUES ("'.$stringvar.'","'.$stringvar.'",'.$intvar.','.$decimalvar.')'; 
$query = 'INSERT INTO table (charfield,charfield,intfield,decimalfield) VALUES ("'.$stringvar.'","'.$stringvar.'","'.$intvar.'","'.$decimalvar.'")'; 

我執行這幾種不同的方式使用過這些組合:

mysql_real_escape_string($query); 
mysql_query($query); 
$result = @mysql_query($query); 

我有迴音發表正在連接的聲明,看起來很好。即使我將其複製並粘貼到phpmyadmin sql編輯器中,它也能正常運行。數據庫是MySQL,用戶擁有正確的權限。

我在做什麼錯?


編輯:

使用or die錯誤消息:

Access denied for user 'schaffins'@'localhost' (using password: NO) 

我已經添加了權限的用戶選擇,插入和更新,我使用的是用戶在PHP連接在執行任何事之前

此外,我能夠插入到我在同一個腳本中創建的另一個表中。

+0

是否啓用了錯誤報告?還有什麼從mysql_error()返回? – Scuzzy

+0

當你說它失敗了,你能給我們提供更多的信息 - 你的意思是它執行,但沒有插入,或者你會得到一個錯誤,如果是這樣的錯誤信息 – FluffyKitten

+0

'mysql_query($ query)或die(mysql_error( ))'它會告訴你什麼是錯的。 – deceze

回答

0

有時數據庫連接僅在某些操作後才發生& |驗證發生。在嘗試執行任何sql之前,確保你有一個開放的連接。如果連接嵌套在if/else代碼塊中,則條件可能不滿足,並且db連接將不會建立。

嘗試找到數據庫連接和移動(或複製)到一個更加'全球化'的位置內的PHP - 也就是在PHP的某個地方,確保數據庫連接之前,任何可能排除連接建立基於不允許的條件

1

在整個查詢中不能使用mysql_real_escape_string。這將會避免引用是查詢語法的一部分。您需要在要插入查詢的值上使用它。

+0

我在一對夫婦跑了評論它,並沒有什麼區別 – WhoIsMaryLou

2

這個問題不在你的插入中 - 錯誤是連接到數據庫,所以它甚至沒有運行插入語句。

仔細檢查您傳遞到mysql_connect()...從錯誤消息「訪問被拒絕用戶'schaffins'@'localhost'(使用密碼:NO)」的憑據(看來問題出在您的密碼上。

相關問題