当我试图通过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