gpt4 book ai didi

php - 为什么我的 INSERT INTO 方法返回 false?

转载 作者:行者123 更新时间:2023-11-29 01:56:42 25 4
gpt4 key购买 nike

我正在尝试将一些信息插入到我的一个数据库表中。这是我的代码:

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。你能帮帮我吗?

最佳答案

为了关闭问题并标记为已解决,需要回答多个评论:

同时使用 stripslashes() 转义您的数据和 mysqli_real_escape_string()功能。

更好的是,使用 prepared statements , 或 PDO with prepared statements .

在一段时间内交换的许多评论中,例如您的 created_at 列作为 DATETIME 用于您的 NOW() MySQL功能。

另一个是我认为是拼写错误的列名称,是 firstnam 我怀疑是 firstname

关于法语错误;这是因为 SQL 的 .ini 文件设置为类似 lc-messages=fr_FR 的内容,需要更改为 lc-messages=en_GB,因为您使用的是 Wampserver , 是为了获得英文消息需要做的事情。

Wamp 的默认语言在其 MySQL 中设置为法语,很奇怪

而不是使用 echo json_encode($res);,你应该使用 or die(mysqli_error($con)) 以获得“真正的”错误.

一旦您的代码没有错误,您就可以重新使用 echo json_encode($res);

关于php - 为什么我的 INSERT INTO 方法返回 false?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26897854/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com