为什么这个MYSQLi INSERT查询失败而没有错误或异常

时间:2017-03-09 08:31:12

标签: php mysqli error-handling

我最近更改了服务器,现在某些mysqli查询失败,没有任何通知。

$mysqli = new mysqli($h, $u, $p, $db);
if (mysqli_connect_errno()) {
    error_log("Connect failed: %s\n" .  mysqli_connect_error());
}

    if ($stmt = $mysqli->prepare("INSERT INTO users (email, 
                                            firstName,
                                            lastName, 
                                            phone) 
                                            VALUES (?, ?, ?, ?)"))
{
    $stmt->bind_param("sssi", $email, $firstName, $lastName, $phone);
    $stmt->execute();
    $stmt->close();
} else {
    error_log('[INSERT]errno: %d, error: %s', $mysqli->errno, $mysqli->error);
}

永远不会调用error_logs(但其他error_log()工作正常)。 mysqli SELECT查询工作正常。所有INSERT / UPDATE查询都失败,没有错误。

唯一的变化可能是服务器之间的MySQLi版本更改。

1 个答案:

答案 0 :(得分:1)

请用此替换您的查询。我已从prepare()语句中删除了您的if方法,并将其执行放在那里。

$stmt = $mysqli->prepare("INSERT INTO users (email, firstName, lastName, phone) VALUES (?, ?, ?, ?)");
$stmt->bind_param("sssi", $email, $firstName, $lastName, $phone);

if($stmt->execute()){ // if the query successfully executes
    echo "success";
} else {
    // display error
}

这应该可以解决您的问题,希望它可以帮到您!如果你有任何问题;发表评论!