我正在準備的語句PHP
和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']));
}
可能有人或許可以解釋一個更好的方法來調試代碼?這對我來說沒有任何意義,因爲我檢查函數是否與if($query->execute())
一起工作,並且它是成功的。當然,假設問題不在於執行功能,而是在其他地方。這個問題不能是POST數據,因爲它證實了以下幾點:
if
(
$_POST['foo'] && isset($_POST['foo']) &&
$_POST['bar'] && isset($_POST['bar'])
)
{
// Statements.
}
我很無言。
EDIT
我想指出我回聲2 particluar POST的值瓦爾因爲這些是更新所述代碼時,我加入的那些。它從此停止工作。另請注意,我已使用print_r($_POST)
,並且所有POST變量都已設置幷包含值。
當然'affected_rows'總是會返回0,但我的問題是更側重於_why_沒有行受到影響,當我可以我的代碼或數據庫結構看不到任何錯誤。我的觀點:所有行都存在,所有變量都包含值,但MySQL不會更新任何記錄。我怎樣才能更好地診斷這一點? – George88