mysqli_query插入成功并抛出错误 [英] mysqli_query insert success and throws error
问题描述
这个问题使我感到困惑.我有一个简单的mysqli查询,它可以成功地将数据插入db中,但也会在响应中引发错误.
This issue has baffled me. I have a simple mysqli query, which successfully inserts the data in db but also throws an error in response.
我知道我必须参数化查询等.这只是一个测试运行.
$query = "INSERT INTO user(user_id,subdomain) VALUES ('$user_id','$subdomain')";
$sql = mysqli_query($conn, $query);
执行时,出现以下(为清晰起见而格式化)错误:
On execution, I get the following (formatted for legibility) error:
错误:1 INSERT INTO user(user_id,subdomain)VALUES('abcdefgh | 123456','abcd')您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册以获取正确的语法,以在第1行的"1"附近使用
Error: 1 INSERT INTO user(user_id,subdomain) VALUES ('abcdefgh|123456','abcd') 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 '1' at line 1
但是当我检查数据库时,数据已正确插入.
But when I check the db, the data is inserted properly.
表架构如下:
user
Column Type Null Default
id (Primary) int(50) No
user_id varchar(50) No
subdomain varchar(30) No
modified timestamp No CURRENT_TIMESTAMP
关于这里发生的事情有什么想法吗?
Any ideas on what is happening here?
添加更多代码
$host = 'localhost';
$user = 'root';
$pass = 'mysql';
$db = 'localauth0';
$conn = mysqli_connect($host, $user, $pass, $db);
mysqli_set_charset($conn, "utf8");
$user_id = mysqli_real_escape_string($conn, $_POST['user_id']);
$subdomain = mysqli_real_escape_string($conn, $_POST['storeSubdomain']);
// $query = "INSERT INTO user (user_id,subdomain) VALUES ('$user_id','$subdomain')";
$query = "INSERT INTO user(user_id,subdomain) VALUES ('".$user_id."','".$subdomain."')";
$sql = mysqli_query($conn, $query);
if ($conn->query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $query . "<br>" . $conn->error;
}
$conn->close();
exit();
推荐答案
这是您的问题:
$sql = mysqli_query($conn, $query);
if ($conn->query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $query . "<br>" .$conn->error;
}
您两次调用mysqli_query,第一个插入记录:
You call mysqli_query twice, the first one inserts the record:
$sql = mysqli_query($conn, $query);
第二次,它只对字符串"1"运行查询,但是您的错误报告将错误的内容连接起来以报告问题.
The second time, it just runs a query on the string "1" but then your error report concatenates the wrong stuff to report the problem.
怎么样
$result = mysqli_query($conn, $query);
if ($result) {
echo "New record created successfully";
} else {
echo "Error: " . . "<br>" . mysqli_error($conn);
}
这篇关于mysqli_query插入成功并抛出错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!