因此,我的代码提交一个查询,检查它是否有效,并根据它返回一条消息。几个月前它还能用。最近,我切换了主机(从Windows VPS到Linux)。
实际的MySQL查询本身是有效的。它成功地连接到数据库,但是代码没有检查它是否成功。
if (Mysql_Update($sql)) // Send the query and check for completion.
{
$success = "You have updated the records for <b>" . $firstName . " " . $lastName . "</b>";
renderForm($id, $firstName, $lastName, $number, $email, NULL, $success);
}
else
{ // If the MySql Query fails, throw an error.
echo danger("The MySql query has failed!");
echo danger(mysqli_error($conn));
}下面是Mysql_Update的详细信息
function Mysql_Query($query)
{
global $conn; // Utilize the database connection.
$query = mysqli_query($conn, $query) or die($conn->error);
return $query;
}
function Mysql_Update($query)
{
switch (isAdmin())
{
case true:
Mysql_Query($query);
break;
default:
ob_end_clean();
die('You are not authorized to be in this area.');
break;
}
}正如我之前所说的,查询本身会遍历并更新数据库。但是我的网页返回了错误消息,对于mysql_error($conn)来说,它只是一个emtpy红框(danger()创建了这个红框)。在切换到新的VPS之前,它曾经工作得非常好,这是确切的代码。旧的DB配置也使用root用户,但新的配置使用被授予所有DB权限的"admin“用户。我不明白为什么这些变化会很重要。没有传输任何其他设置,例如php.ini,仅在网络发布中传输。
发布于 2021-08-02 01:00:19
Mysql_update()不返回值,所以if (Mysql_Update($sql))总是会失败。我看不出有什么别的办法能行得通。
您需要从Mysql_Update()返回一个值。你可以进一步简化它:
function Mysql_Update(string $query):bool
{
if (isAdmin()) {
return Mysql_Query($query);
} else {
ob_end_clean();
die('You are not authorized to be in this area.');
}
}https://stackoverflow.com/questions/68615140
复制相似问题