Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';我想不出是什么';我的php/sql语句有什么问题_Php_Sql - Fatal编程技术网

Can';我想不出是什么';我的php/sql语句有什么问题

Can';我想不出是什么';我的php/sql语句有什么问题,php,sql,Php,Sql,所以这可能是一个愚蠢的初学者问题,但我一直在研究它,无法理解它。一点背景知识:在练习制作一个web应用程序时,第1页上的表单会从用户那里获取一些值,然后将它们发布到下一页,该页包含连接到DB的代码并填充相关表 我成功建立了DB连接,下面是包含查询的代码: $conn->query("SET NAMES 'utf9'"); $query_str = "INSERT INTO 'qa'.'users' ('id', 'user_name','password' ,'emai

所以这可能是一个愚蠢的初学者问题,但我一直在研究它,无法理解它。一点背景知识:在练习制作一个web应用程序时,第1页上的表单会从用户那里获取一些值,然后将它们发布到下一页,该页包含连接到DB的代码并填充相关表

我成功建立了DB连接,下面是包含查询的代码:

$conn->query("SET NAMES 'utf9'");         

$query_str = "INSERT INTO 'qa'.'users' ('id', 'user_name','password' ,'email' ,'dob' ,'sx') VALUES (NULL, $username, $password, $email, $dob, $sx);";

$result = @$conn->query($query_str);
返回的错误如下:插入查询失败:SQL语法中有错误;检查与您的MySQL服务器版本对应的手册,以了解在第1行的“qa”、“users”(id”、“users_name”、“password”、“email”、“dob”、“s)附近使用的正确语法


提前感谢!

除非自从我在PHP中创建MySQL后它发生了更改,否则请使用反勾(`)而不是撇号(`)转义您的db/列/表名.

一种很好的通用故障排除技术是通过数据库的另一个接口使查询工作。例如,phpMyAdmin。如果它在那里工作,则您对未来有一定的信心。或者您可以找到如何修复SQL。(phpMyAdmin很方便,因为它可以将您的SQL转换为PHP的现成字符串。)

您需要用倒勾(`)而不是(')来转义列名


您还需要正确地转义正在插入的实际值(使用一个引号)

OMG不是一个正确的答案

$query_str = "
INSERT INTO `qa`.`users` (`id`, `user_name`,`password` ,`email` ,`dob` ,`sx`) 
VALUES (NULL, '$username', '$password', '$email', '$dob', '$sx')";
标识符用反勾号引用,而字符串用撇号引用

我希望您在将所有变量放入查询之前已通过mysql\u real\u转义字符串传递,即:

$username = mysql_real_escape string($username);

以此类推

如果我使用反勾号,我会得到一个未知列…在'field list'错误中,你知道吗,我再次尝试了它,它在myphpadmin中工作。谢谢!具体的错误是:“插入查询失败:未知列'field list'中的'olegs'”“olegs”是我附加到$username变量的输入之一,所以不确定它为什么告诉我一个错误“olegs”列,该列应为“用户名”“我已经将问题缩小到在sql语句中使用变量名的方式,我可以从这里开始,谢谢。好主意-这是我通过phpmyadmin得到的错误:您的sql语法有错误;请查看与您的MySQL服务器版本对应的手册,以获得在“qa”附近使用的正确语法。”('id'、'user_name'、'password'、'email'、'dob'、'sx')值(NULL,'在第1行基本上是一样的,对吧?嘿嘿……我想这本身并没有太大帮助。但是重复尝试要比通过HTTP做容易得多!我相信也没有
utf9
编码。。。