当前位置: 首页 > 知识库问答 >
问题:

从PHP插入查询时的MySQL语法错误

束俊材
2023-03-14

我在PHP的MYSQL查询中发现了一个非描述性语法错误。如果我“回显”查询的文本并将其粘贴到一个MySQL查询窗口中,则代码可以工作。下面是查询的SQL、错误代码和错误消息...

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 server版本相对应的手册,了解第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));
}

我知道数据库连接正在工作。我能够选择和更新表。我还可以插入到其他具有不同查询的表中。

我愿意接受任何建议。

提前感谢您的帮助!

共有2个答案

呼延曜灿
2023-03-14

我在查询的末尾看到一个。你确定那应该在那儿吗?

魏航
2023-03-14

我在查询字符串中看到一些错误。

首先,您的所有变量都作为文字字符串传递:“...VALUES($TMPUserId,'$AdvertisementNameNew‘,...”应该是“...VALUES(”.$TMPUserId.“,’”.$AdvertisementNameNew.“‘,...”。

第二,我看到$BannerSetTimerNew周围缺少引号。

第三,有一个额外的;。

下面是我编写查询的方式:

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."')")) { ...

但我没有测试它。

希望这有帮助。

 类似资料:
  • 请查看与您的MySQL server版本相对应的手册,以便在

  • 我试图使用servlet将行插入到表中,当尝试使用语句(使用insertQuery1和insertQuery2)进行插入时,它执行良好,但当使用preparedstatment(使用insertPrepQuery)执行时,它抛出SQL语法错误。代码: 错误:

  • 这是我的疑问- 我在执行时遇到这个错误 错误:您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册,以获得使用“alter TABLE tmp drop category_id”附近的正确语法;在第2行插入类别SELECT 0'错误号:1064 但是当我直接在数据库中运行查询时,我不会得到任何错误。请帮帮我!

  • 问题内容: 此查询有什么问题: 它不带子句就可以工作。我似乎忘记了我的SQL。 问题答案: MySQL INSERT语法不支持WHERE子句,因此您的查询将失败。假设您的列是唯一键或主键: 如果您要插入ID为1的新行,则应使用: 如果您尝试更改ID为1的现有行的weight / desiredWeight值,则应使用: 如果需要,还可以使用INSERT .. ON DUPLICATE KEY语法,

  • 问题内容: 我们最近将数据库从MSSQL切换到MySQL,使用参数的查询不再起作用。 这是MSSQL中的查询示例: 通常,参数浏览器会弹出并询问:id的值,但是在MySQL中,我会收到此错误: 您的SQL语法有误;检查与您的MySQL服务器版本相对应的手册,以在’:id’附近使用正确的语法 我尝试使用@或?代替:,它不起作用。 在此先感谢您的帮助。 问题答案: 语法不一样 用户定义变量的文档

  • 我正在使用JDBC尝试从以下表中选择: 我想检查是否存在具有特定login和PASSWORDMD5值的行,如下所示: 但当我调用时,我会得到以下错误: com.mysql.jdbc.exceptions.jdbc4.mysqlsyntaxerrorexception:sun.reflect.nativeConstructorAccessorImpl.newInstance(nativeConstr