【发布时间】:2015-01-09 22:44:23
【问题描述】:
我正在尝试向我的一个数据库表中插入一些信息。这是我的代码:
function insertUser(){
$con = db_connect();
$response = array();
if(empty($_REQUEST['firstname'])){
$fnam = "";
}else{
$fnam = $_REQUEST['firstname'];
}
if(empty($_REQUEST['lastname'])){
$lnam = "";
}else{
$lnam = $_REQUEST['lastname'];
}
if(empty($_REQUEST['age'])){
$age = "";
}else{
$age = $_REQUEST['age'];
}
if(empty($_REQUEST['sex'])){
$sex = "";
}else{
$sex = $_REQUEST['sex'];
}
if(empty($_REQUEST['location'])){
$loc = "";
}else{
$loc = $_REQUEST['location'];
}
if(empty($_REQUEST['education'])){
$edu = "";
}else{
$edu = $_REQUEST['education'];
}
//check if username forgot
if(empty($_REQUEST['username'])){
$response[] = "Please fill username box";
}else{
$uname = $_REQUEST['username'];
//check if username is existed
$isExisted = mysqli_query($con, "SELECT * FROM tbl_users WHERE username = '$uname'");
if(mysqli_num_rows($isExisted) > 0){
$response[] = "Username is Existed";
}
}
//check if password forgot
if(empty($_REQUEST['password'])){
$response[] = "Please fill password box";
} else{
$pass = $_REQUEST['password'];
}
if(empty($response)){
//$password = getHash($password);
$res = mysqli_query($con, "INSERT INTO tbl_users (firstnam, lastname, age, sex, location, education, username, password, created_at) VALUES ('$fnam', '$lnam', '$age', '$sex', '$loc', '$edu', '$uname', '$pass', NOW())");
// user stored successfully
if ($res) {
$response[] = "user stored successfully";
}
}
echo json_encode($response);
mysqli_close($con);
}
这是与我的数据库的连接,我可以使用它来读取数据:
function db_connect(){
$con = mysqli_connect("localhost", "root", "", "ketabha");
mysqli_set_charset($con, 'utf8');
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
return $con;
}
表名和每个列名都是正确的,但它不起作用!当我echo json_encode($res); 它在我的浏览器中显示为假。你能帮帮我吗?
【问题讨论】:
-
false表示查询出错。使用echo mysqli_error($con)查看错误信息。 -
您应该使用
or die(mysqli_error($con))而不是使用echo json_encode($res);来获得“真正的”错误。 php.net/manual/en/function.error-reporting.php 也不会受到伤害。 -
您应该使用
bind_param()而不是变量替换。可能其中一个变量包含引号,导致语法错误。 -
@Barmar 我按照你说的做了,这是我浏览器中的结果。我输入密码为 jakf\。 Erreur de syntaxe près de ''jakf\', NOW())' à la ligne 1
-
转义您的数据或更好的是,使用prepared statements 或PDO with prepared statements。那将解决它。幸好我懂法语,mais oui mon ami ;)
标签: php mysql sql mysqli insert