即時使用mysqli_real_escape_string時,我有語法錯誤拋回給我。我正在使用的IDE沒有顯示語法問題,但是這是我第一次嘗試在多個CASE語句中使用此函數(事實上,我還沒有非常多地使用這個函數)。mysqli_real_escape_string當使用CASE插入到db時正確的語法
插入代碼是在這裏:
$query = "INSERT INTO `auctionwp_categories`
(`CategoryID`, `CategoryLevel`, `CategoryName`, `CategoryParentID`, `LeafCategory`, `AutoPayEnabled`, `BestOfferEnabled`, `Expired`, `IntlAutosFixedCat`, `Virtual`, `LSD`, `ORPA`)
VALUES (
'".mysqli_real_escape_string($link, $xmlCategoryID)."', '".mysqli_real_escape_string($link, $xmlCategoryLevel).", '".mysqli_real_escape_string($link, $xmlCategoryName).", '".mysqli_real_escape_string($link, $xmlCategoryParentID).",
CASE '".mysqli_real_escape_string($link, $xmlLeafCategory)."' WHEN 'true' THEN 1 ELSE 0 END,
CASE '".mysqli_real_escape_string($link, $xmlAutoPayEnabled)."' WHEN 'true' THEN 1 ELSE 0 END,
CASE '".mysqli_real_escape_string($link, $xmlExpired)."' WHEN 'true' THEN 1 ELSE 0 END,
CASE '".mysqli_real_escape_string($link, $xmlBestOfferEnabled)."' WHEN 'true' THEN 1 ELSE 0 END,
CASE '".mysqli_real_escape_string($link, $xmlIntlAutosFixedCat)."' WHEN 'true' THEN 1 ELSE 0 END,
CASE '".mysqli_real_escape_string($link, $xmlVirtual)."' WHEN 'true' THEN 1 ELSE 0 END,
CASE '".mysqli_real_escape_string($link, $xmlLSD)."' WHEN 'true' THEN 1 ELSE 0 END,
CASE '".mysqli_real_escape_string($link, $xmlORPA)."' WHEN 'true' THEN 1 ELSE 0 END
)";
if (mysqli_query($link, $query)) {
echo "Successfully inserted " . mysqli_affected_rows($link) . " row";
} else {
echo "Error occurred: " . mysqli_error($link);
}
連接到數據庫通過這個代碼是全成在配置文件:
$user="root";
$pass="";
$database="auctionwp";
$server="localhost";
$link = mysqli_connect($server, $user, $pass, $database);
if (!$link) {
die('Connect Error (' . mysqli_connect_errno() . ') '
. mysqli_connect_error());
}
echo 'Success... ' . mysqli_get_host_info($link) . "\n";
是我的語法問題,由於CASE語句?我找不到任何在線的例子或PHP手冊,顯示mysqli_real_escape_string上插入這個說法被用於,
問候 馬丁
當它沒有明確需要時,將所有開銷放到查詢中仍然不是一種好的做法!不僅你發送你的查詢一個字符串,它比布爾值「更長」,但是你仍然需要執行你的語句!和一個案例/開關語句只有兩個選項真的尖叫一個IF!因此你正在使用mysqli你必須在mysql服務器上工作,這裏的語法** case'$ var'when'true'then 1 else 0 end,** should be ** if('$ var'='true' ,1,0)**它增加了:可讀性和可能的速度!不過,我仍然堅持在MySQL的一個PHP檢查;) – Ivo