mysqli_query插入成功并抛出错误 [英] mysqli_query insert success and throws error

查看:310
本文介绍了mysqli_query插入成功并抛出错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这个问题使我感到困惑.我有一个简单的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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆