Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么MYSQLi INSERT查询没有错误或异常而失败_Php_Mysqli_Error Handling - Fatal编程技术网

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

Php 为什么MYSQLi INSERT查询没有错误或异常而失败,php,mysqli,error-handling,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,

我最近更换了服务器,现在某些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);
}
永远不会调用错误日志(但其他错误日志()可以正常工作)。 mysqli选择查询工作正常。所有INSERT/UPDATE查询都失败,没有错误


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

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

$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
}

这会解决你的问题,希望它能帮你解决!如果你有任何问题;请留言

是否真的有必要将查询置于if条件下?某些查询还是所有查询?对于遇到服务器间行为变化类似问题的任何人,这里的问题是新服务器上的mysql被设置为严格模式,因此不接受没有默认值的插入。此外,虽然在假设的重复问题的答案中隐藏着答案的暗示,但这是一个不同的问题,有一个清晰简洁的答案。“重复”的问题给初学者带来了一个错误。我标记了一个答案,该答案完全回答了问题,并且将简洁、有助于其他人。您将此标记为另一个问题的副本,该问题基本上不相关。很明显,这不是一个复制品。@YourCommonSense,嗯?不要在“答案”上写“试一试”。评论中应该有疯狂的猜测。@YourCommonSense这只是一句名言。这并不是否决投票的正当理由。如果提供的代码有问题或不起作用,就投否决票,如果提供的方式不符合您的标准(当然,除非这是一个错误的解释)。Stack Overflow不是一个赌博网站,您可以在这里打赌答案,然后看看它是否起作用。@YourCommense我说过吗?我只是为他的代码提供了一个替代方案,我不会“打赌”任何事情。