我对PHP
and的准备好的语句有一点问题MySQLi
。我的代码获取POST
数据,准备一个语句,然后将 POST 数据绑定到查询。在此之后它执行,看似没有错误,但该语句显然没有得到正确执行,因为没有发生数据库更改。
快速概述我的问题:
- 我正在使用 MySQLi 和准备好的语句。
- 我更新了一些以前没有使用准备好的语句的 PHP/MySQLi 代码。
- 自更新以来,出现了问题
$query->execute()
。
代码:
if($query = $this->mysqli->prepare("UPDATE article SET copy = ?, title = ?, alias = ?, description = ?, category = ?, category_id = ?, author = ?, permission = ?, mode = ?, comments = ?, revised = ?, frequency = ?, priority = ? WHERE id = ?"))
{
if
(
$query->bind_param
(
"sssssdsssssssd",
$_POST['edit_article'],
$_POST['edit_title'],
$_POST['edit_alias'],
$_POST['edit_description'],
$_POST['edit_category'],
$result['id'],
$_POST['edit_author'],
$_POST['edit_permission'],
$_POST['edit_mode'],
$_POST['edit_comments'],
$date_time,
$_POST['edit_frequency'],
$_POST['edit_priority'],
$id
)
)
{
if($query->execute())
{
echo $this->mysqli->error; // does nothing.
// These statements print to the screen successfully with the correct values.
echo $_POST['edit_frequency'] . "<br />";
echo $_POST['edit_priority'] . "<br />";
//$_SESSION['article_edited'] = true;
// die;
//exit(header("Location: " . __MANAGER__ . $_POST['edit_alias']));
}
else
{
$_SESSION['article_edited'] = false;
exit(header("Location: " . __MANAGER__ . $_POST['edit_alias']));
}
}
}
else
{
$_SESSION['article_edited'] = false;
exit(header("Location: " . __MANAGER__ . $_POST['edit_alias']));
}
有人可以解释调试此代码的更好方法吗?这对我来说毫无意义,因为我检查了该execute()
功能是否适用if($query->execute())
并且它是否成功。当然,假设问题不在于执行功能,而在于其他地方。问题不可能是 POST 数据,因为它可以通过以下方式验证:
if
(
$_POST['foo'] && isset($_POST['foo']) &&
$_POST['bar'] && isset($_POST['bar'])
)
{
// Statements.
}
我一无所知。
编辑
我想指出我回显了 2 个特定 POST 变量的值,因为这些是我在更新代码时添加的值。它已经停止工作。另请注意,我已使用print_r($_POST)
并且所有 POST 变量都已设置并包含值。