我正在尝试制作一个注册表单,但是sql查询只是不起作用..尝试添加同意并删除它们,将(')符号添加到插入的数据并删除它们......没有任何作用!我不确定我的错误在哪里...有人可以帮忙吗?
PHP代码:
$mysqli = new mysqli('localhost','root','','wisdom') or die("CONNECTION ERROR");
$query = "INSERT INTO net_users VALUES (NULL,'$fname','$mname','$lname','$dob','$uname','$pasw','$phone1','$phone2','$email',NULL,NULL,NULL,'$date');";
if($mysqli->query($query)) echo "REGISTERED";
else echo "<br><br>FAILED: ".$mysqli->error;
ERROR:
FAILED: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '123456789,987654321,b@b.b,NULL,NULL,NULL,14/12/04)' at line 1
数据($ _POST):
Array (
[fname] => A //$fname
[mname] => A //$mname
[lname] => A //$lname
[dob] => 2014-07-17 //$dob
[username] => bakriawad //$uname
[password] => horray //$passw
[cpassword] => horray
[email] => b@b.b //$email
[phone1] => 123456789 //$phone1
[phone2] => 987654321 //$phone2
[botchk] =>
[tos] => on )
// $ date = date(“y / m / d”);
我确保数据与行数据类型匹配...我尝试多次更改和重写代码......没有任何作用!它只是卡在那里!
-------------------------------------------- ------------------------------------------- \
修改 服务器被冻结(或什么东西..),重新启动后接受输入..对不起打扰..但经过6小时的工作你很难直接思考...错误永远不会改变,即使sql不断变化,这是一个清晰的标记。
答案 0 :(得分:2)
两件事;一个是坏的,另一个是非常糟糕的。
答案 1 :(得分:2)
您不能将变量连接到SQL查询字符串中,并希望它能够正常工作。您需要在字符串值周围添加引号,并确保每个字符串都已正确格式化/转义。
$query = "INSERT INTO net_users VALUES (NULL,'$fname','$mname','$lname','$dob','$uname','$pasw','$phone1','$phone2','$email',NULL,NULL,NULL,'$date');";
虽然,我不建议这样做。如果将用户输入连接到SQL查询,那么您刚刚打开了SQL注入的大门。你想要做的是使用“准备好的陈述”。您要做的是将?
添加到您想要变量的查询中。然后将变量传递给单独的函数。没有引用,没有逃避,没有SQL注入的担忧。
$mysqli = new mysqli('localhost','root','','wisdom') or die("CONNECTION ERROR");
$query = $mysqli->prepare('INSERT INTO net_users VALUES (NULL,?,?,?,?,?,?,?,?,?,NULL,NULL,NULL,?)');
// No quoting or escaping needed, this passes the values separate from the query
$query->bind_param('ssssssssss', $fname, $mname, $lname, $dob, $uname, $pasw, $phone1, $phone2, $email, $date);
// This actually runs the query
$query->execute();
答案 2 :(得分:0)
您应该用单引号括起值。尝试在您的值中添加单引号。
$query = "INSERT INTO net_users VALUES (NULL,'$fname','$mname','$lname','$dob','$uname','$pasw','$phone1','$phone2','$email',NULL,NULL,NULL,'$date');";
您还有sql
injection attack
的风险。建议您改为使用bind_param()
。