php - 为什么我的 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。
解决方案
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.');
}
}
推荐阅读
- c - CUDD 包:编译期间未定义的引用
- java - 在 Hibernate 中快速插入许多实体
- angular - RxJS - BehaviorSubject,onComplete 未调用
- xml - 如何从 Applescript 中的字符串(不是文件)创建 XML?
- javascript - 删除由子域设置的子域cookie
- hyperledger-fabric - 我想知道您是否可以将文件导入 Hyperldeger Fabric
- javascript - 如何获取选择数组中元素的索引?
- python - 如何在 Python 中的 tabula.read_pdf() 函数上修复此错误
- qt - 更改 QPrintDialog 样式
- bash - 尝试在 .bashrc 文件中添加别名