首页 > 解决方案 > 为什么我的 PHP MySQL 验证代码停止工作?

问题描述

因此,我有提交查询并检查它是否有效并基于此返回消息的代码。几个月前它曾经工作过。最近,我切换了主机(从 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)它只是一个空的红色框(danger()创建红色框)。在切换到新的 VPS 之前,它曾经完美地工作,这个确切的代码。旧的 DB 配置也使用了 root 用户,但新的使用了一个被授予所有 DB 权限的“admin”用户。我不明白为什么这些变化很重要。没有其他设置,例如php.ini被转移过来,只有 inetpub。

标签: phpmysql

解决方案


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.');
  }
}

推荐阅读