mysqli_query插入成功并抛出错误

时间:2017-01-11 20:59:40

标签: php mysqli

这个问题困扰着我。我有一个简单的mysqli查询,它成功地在db中插入数据,但也会在响应中抛出错误。

我知道我必须参数化查询等。这只是一个测试运行。

$query = "INSERT INTO user(user_id,subdomain) VALUES ('$user_id','$subdomain')";

$sql = mysqli_query($conn, $query);

执行时,我得到以下(格式化易读性)错误:

  

错误:1 INSERT INTO user(user_id,subdomain)VALUES(' abcdefgh | 123456',' abcd')您的SQL语法出错;检查与您的MySQL服务器版本相对应的手册,以便在#1;'附近使用正确的语法。在第1行

但是当我检查数据库时,数据已正确插入。

表格式如下:

user

Column          Type         Null   Default
id (Primary)    int(50)      No              
user_id         varchar(50)  No              
subdomain       varchar(30)  No              
modified        timestamp    No     CURRENT_TIMESTAMP        

关于这里发生了什么的任何想法?

编辑:添加更多代码

$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();

2 个答案:

答案 0 :(得分:7)

这是你的问题:

$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,第一个插入记录:

$sql = mysqli_query($conn, $query);

第二次,它只是对字符串&#34; 1&#34;进行查询。但是然后你的错误报告连接错误的东西来报告问题。

怎么样

$result = mysqli_query($conn, $query);

if ($result) {
    echo "New record created successfully";
} else {
    echo "Error: " .  . "<br>" .  mysqli_error($conn);
}

答案 1 :(得分:0)

我想我明白了。您检查$conn->query($sql) === TRUE但不是http://php.net/manual/de/mysqli.query.php

它是混合的。根据评论,它还可以包含mysqli_result

您的查询没有失败。只是你的if条件:)

更新:我错了。在我建议之前我真的应该阅读这些链接:

  

mysqli的:查询()   失败时返回FALSE。成功的SELECT,SHOW,DESCRIBE或   EXPLAIN查询mysqli_query()将返回一个mysqli_result对象。对于   其他成功的查询mysqli_query()将返回TRUE。

你有一个INSERT查询,所以大多数人都认为我的猜错了。

相关问题