當我試圖通過PHP插入一條記錄到MySQL時,我遇到了一個非常奇怪的問題,我想知道是否有人可以擺脫它的任何光線,因爲我不知道想法現在。通過PHP MySQL INSERT問題mysql_query
數據庫表:
Field Type Null Default Comments
UserID bigint(20) No Autoincrement
UserGUID text No
ServerID int(11) No
UserName text No
Passwrd text No
Prompt text No
Answer text No
EMail text No
Verified int(11) No 0
Language text No
Gender int(1) Yes NULL
DateOfBirth int(11) Yes NULL
Country int(11) Yes NULL
PostCode text Yes NULL
State text Yes NULL
Town text Yes NULL
相關的PHP代碼片段...
public function signupUser($uid, $pwd, $prompt, $answer, $email, $lang, ... &$result)
{
$guid = $this->getGUID();
$serverID = 1;
$result = mysql_query("INSERT INTO User(UserGUID, ServerID, UserName, Passwrd, EMail) " +
"VALUES ('$guid', $serverID, '$uid', '$pwd', '$email')");
之前有人告訴我,我應該使用庫MySQLi,參數化我的查詢之類的,請注意,這個PHP/MySQL只是一個本地測試工具,在專用網絡上,只有在真正的Web服務(dotNet/Oracle)可用時才用於開發目的。
所以,如果我調用該函數上面合適的參數,$結果回來了......
「您的SQL語法錯誤;檢查對應於您的MySQL服務器版本的手冊正確的語法使用近「0」在行1「
,但如果我降低了查詢,只是...
$result = mysql_query("INSERT INTO User(UserGUID, ServerID, UserName, Passwrd) " +
"VALUES ('$guid', $serverID, '$uid', '$pwd')");
它的作品!很高興地插入記錄(儘管在非空字段中有空值!?!)爲了增加更多的複雜性,如果我使用合適的值運行(原始)查詢,例如
INSERT INTO User(UserGUID, ServerID, UserName, Passwrd, EMail) VALUES ('guid', serverID, 'uid', 'pwd', 'email')
直接對數據庫通過phpMyAdmin,它也可以!
這使我瘋狂。我試着改變字段名稱,可空性,順序,我在查詢中使用哪些字段(在前四個工作之後),值 - 它們都沒有什麼不同。它幾乎看起來好像不需要超過四個字段。
請......任何人......?我真的很難理解爲什麼它不接受第五個領域,我沒有任何意義。不幸的是,返回的錯誤根本沒有任何幫助,太模糊,似乎等同於MS發生的所謂「錯誤」。
如果我必須更換爲mysqli,我會但我寧願不必重新制作測試設備,如果我可以避免它。
由於您正在創建整個SQL查詢(無綁定等),因此將其放入字符串中,執行並將其寫入屏幕:'$ sql =「INSERT ...」; echo $ sql; $ result = mysql_query($ sql);'並且在返回錯誤時查看查詢的實際外觀。 –
php中的連接是用'.',而不是'+'完成的。這可能是問題 –
@VedranŠego好吧,我!你已經間接地爲我回答了。我完全不熟悉PHP(正如你可能已經猜到的那樣),並且一直使用+作爲字符串連接運算符,因爲它似乎可以在其他地方使用。多麼flamin'白癡我假設+會是concat。請隨意添加,作爲正式答案,我會標記它。 @爆炸藥對不起隊友,他擊敗了你,但你現在就是。 – Mike