我在PHP的MYSQL查詢中遇到了非描述性的語法錯誤。如果我「回顯」查詢的文本並將其粘貼到MySQL查詢窗口中,則代碼有效。下面是SQL的查詢,錯誤代碼和錯誤信息......插入來自PHP的查詢的MySQL語法錯誤
INSERT INTO ADVERTISEMENTS (`user_id`, `ad_name`, `click_url`, `img_url`, `bg_color`, `start_date`, `end_date`, `timer_delay`, `add_date`) VALUES (2, 'Test New Ad', 'http://www.google.com', 'red_arrow.png', '#000000', '1980-05-11 00:00:00', '2020-05-01 00:00:00', 5, '2013-07-14 22:21:59');
錯誤代碼:1064
錯誤信息:您的SQL語法錯誤;檢查對應於你的MySQL服務器版本在1號線
這裏是我使用的PHP代碼使用近「」正確的語法手冊...
$link = mysqli_connect($UM_Settings["database_options"]["server_name"], $UM_Settings["database_options"]["username"], $UM_Settings["database_options"]["password"], $UM_Settings["database_options"]["database_name"]);
$advertisementNameNew = mysqli_real_escape_string($link, $_POST['advertisementNameNew']);
$destinationURLNew = mysqli_real_escape_string($link, $_POST['destinationURLNew']);
$dropboxUploadFile = mysqli_real_escape_string($link, $_POST['dropboxUploadFile']);
$backgroundColorNew = mysqli_real_escape_string($link, $_POST['backgroundColorNew']);
$bannerStartDateNew = DateStringToMySQL($_POST['bannerStartDateNew']);
$bannerEndDateNew = DateStringToMySQL($_POST['bannerEndDateNew']);
$bannerSetTimerNew = intval($_POST['bannerSetTimerNew']);
$tmpUserID = UM_GetCookie("UM_UserID");
$tmpAddDate = DateStringToMySQL('now');
echo "INSERT INTO ADVERTISEMENTS(`user_id`, `ad_name`, `click_url`, `img_url`, `bg_color`, `start_date`, `end_date`, `timer_delay`, `add_date`) VALUES ($tmpUserID, '$advertisementNameNew', '$destinationURLNew', '$dropboxUploadFile', '$backgroundColorNew', '$bannerStartDateNew', '$bannerEndDateNew', $bannerSetTimerNew, '$tmpAddDate');<br />";
if (!mysqli_query($link, "INSERT INTO ADVERTISEMENTS(`user_id`, `ad_name`, `click_url`, `img_url`, `bg_color`, `start_date`, `end_date`, `timer_delay`, `add_date`) VALUES ($tmpUserID, '$advertisementNameNew', '$destinationURLNew', '$dropboxUploadFile', '$backgroundColorNew', '$bannerStartDateNew', '$bannerEndDateNew', $bannerSetTimerNew, '$tmpAddDate');")) {
printf("Error Code: %s\n", mysqli_errno($link));
echo "<br />";
printf("Error Msg: %s\n", mysqli_error($link));
}
我知道,數據庫連接正在工作。我可以選擇和更新表格。我也可以用不同的查詢插入到其他表中。
我願意接受任何建議。
非常感謝您的幫助!
請在插入查詢前回顯所有變量,以便您可以知道值是否丟失。 – Bharu
我覺得你沒有使用'mysqli' [好方法](http://www.php.net/manual/en/mysqli.quickstart.prepared-statements.php);我注意到你用';'結束了你的陳述,這在API調用中可能不需要。 – Passerby
嘗試'(重音)廣告(重音)'失去;在最後...你在哪裏回顯行將它存儲到變量'echo $ query =「INSERT INT ....'然後在你的'if(!(mysqli_query($ link,$ query))){}' –