PHP表格发送数据,但SQL在所有列中显示零。
我检查了我的代码是否正确并打印了结果但是当我将此数据发送到数据库时,所有列都显示结果为0。出生日期仅显示年份未完成日期。
这是SQL的结果:
这是我的PHP代码:
<?php
include('../dbcon.php'); //database included
if (isset($_POST['signup'])) {
$uname = $_POST['uname'];
$email = $_POST['email'];
$fname = $_POST['firstname'];
$lastName = $_POST['lastname'];
$dob = $_POST['dob'];
$gender = $_POST['gender'];
$password = $_POST['password'];
$qry = "INSERT INTO `registration`(`uname`, `email`, `fname`, `lname`, `dob`, `gender`, `password`) VALUES ('$uname','$email','$fname','$lastName','$dob','$gender','$password')" ; //query taken from the select section of sql form registration.
$run = mysqli_query($dbcon, $qry); //run variable for running the query. $dbcon is database variable
if ($run == true) {
echo "data inserted";
}
else
{
echo "error occurred in registration";
}
}
?>
答案 0 :(得分:1)
正如其他人所指出的那样,您并没有逃避您的代码,因此当任何人使用带有单引号的名称或密码时,该人员就可以完全控制您的数据库。所以不要在SQL命令中使用PHP变量,也不要使用mysqli。使用PDO和准备好的声明。它们会自动转义所有内容甚至检查正确的数据类型(至少有一点)。
要回答你的问题,表的结构是什么(哪些列是varchar,int,date,......任何唯一的约束,......)你可以发布一个不能插入的示例数据集你的代码?
答案 1 :(得分:0)
试
$qry = "INSERT INTO `registration`(`uname`, `email`, `fname`, `lname`, `dob`, `gender`, `password`) VALUES (".$uname.",".$email.",".$fname.",".$lastName.",".$dob.",".$gender.",".$password.")" ;
如果在发送查询之前没有工作检查
$qry = "INSERT INTO `registration`(`uname`, `email`, `fname`, `lname`, `dob`, `gender`, `password`) VALUES (".$uname.",".$email.",".$fname.",".$lastName.",".$dob.",".$gender.",".$password.")" ;
dd($qry);