簡單的PHP頁面(我不是PHP專家,只是學習)更新MS SQL數據庫。以下代碼會生成一個我不知道如何解決的錯誤。在PHP頁面更新MS SQL數據庫中跟蹤錯誤原因
include '/connections/SFU.php';
$query = "UPDATE Person SET PhotoURL = '".$file["name"]."' WHERE USERID='".$_REQUEST['user_id']."';";
if ($result = odbc_exec($dbconnect, $query)) {
echo "// Success!";
}
else {
echo "// Failure!";
}
odbc_close($dbconnect);
//End Update
本節未能在每次「如果($結果...」
但是,如果我運行幾乎相同的代碼
include '/connections/SFU.php';
$query = "UPDATE Person SET PhotoURL = '89990.jpg' WHERE USERID='80'";
if ($result = odbc_exec($dbconnect, $query)) {
// Success!
}
else {
// Failure!
}
odbc_close($dbconnect);
//End Update
它工作得很好。我有回顯$查詢字符串的屏幕和字符串是相同的兩個。我不明白爲什麼它在一個失敗,而不是另一個?
也奇怪的是,當我使用參數化查詢,如
include '/connections/SFU.php';
$query = "UPDATE dbo.Person SET PhotoURL=? WHERE USERID=?";
if ($res = odbc_prepare($dbconnect,$query)) {
echo "Prepare Success";
} else {
echo "Prepare Failed".odbc_errormsg();
}
$uid = $_REQUEST['user_id'];
$fn = $file["name"];
echo "query=".$query." userid=".$uid." filename=".$fn;
if ($result = odbc_exec($res, array($fn, $uid))) {
echo "// Success!";
}
else {
echo odbc_errormsg();
echo "// Failure!";
}
odbc_close($dbconnect);
查詢在上面的準備部分失敗,但在下面的odbc_exec部分失敗:
include '/connections/SFU.php';
$query = "UPDATE Person SET PhotoURL=? WHERE USERID=?";
if ($res = odbc_prepare($dbconnect,$query)) {
echo "Prepare Success";
} else {
echo "Prepare Failed".odbc_errormsg();
}
$uid = "80";
$fn = "samplefile.jpg";
echo "query=".$query." userid=".$uid." filename=".$fn;
if ($result = odbc_exec($res, array($fn, $uid))) {
echo "// Success!";
}
else {
echo odbc_errormsg();
echo "// Failure!";
}
odbc_close($dbconnect);
在任何情況下,我沒有得到任何odbc_errormsg()。
請在代碼中使用[綁定參數](http://php.net/manual/en/security.database.sql-injection.php),不要只傳入網站的原始數據。 – Pondlife 2013-04-25 16:53:20