尝试更新MySQL表时收到此错误消息

时间:2015-05-01 11:26:14

标签: php mysql

  

注意:未定义的变量:第106行的/Applications/MAMP/htdocs/welcometowarwick/scripts/php/insert_imagery.php中的table_name   错误:UPDATE SET business_description ='',image1 =' profiles / sadsadas /',image2 =' profiles / sadsadas /',image3 =' ; profiles / sadsadas /',image4 =' profiles / sadsadas /',image5 =' profiles / sadsadas /'在哪里id =' 307'限制1

     

您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以便使用“' SET business_description ='''''''&profiles; / sadsadas /',image2 = ' PR'在第1行

这是UPDATE代码

$updatesql = sprintf("UPDATE $table_name SET
business_description='$business_description',
image1='$insert_upload1',
image2='$insert_upload2',
image3='$insert_upload3',
image4='$insert_upload4',
image5='$insert_upload5'



WHERE id='$user_id' LIMIT 1");  

if (mysqli_query($link, $updatesql)) {
    header('Location: ../../register/complete.php');



} else {
    echo "Error: " . $updatesql . "<br>" . mysqli_error($link);
}

mysqli_close($link);

任何人都可以看到语法错误是什么吗?

2 个答案:

答案 0 :(得分:1)

这对评论来说太长了,因此我提交以下内容。

语法错误很明显:

right syntax to use near 'SET它从SET开始,所以这告诉我:

  • $table_name未定义,或者包含MySQL不同意的字符。可能是一个空间,一个连字符;谁知道。只有你知道这个以及如何定义$table_name,或者它是否已定义。

  • 另外,正如我在评论中所述;您正在使用sprintf,但没有语法支持。就我而言,你可以摆脱它。

还不清楚您使用哪个MySQL API进行连接,因此请确保您确实使用mysqli_来连接而不是mysql_或PDO。

  • 那些不同的MySQL API不会相互混合。

如果您有任何疑问,请随时在我的回答下面发表评论。

您可能还想使用mysqli_real_escape_string()来逃避您的数据。可能存在MySQL也想要降价的字符。

error reporting添加到文件的顶部,这有助于查找错误。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// rest of your code

旁注:错误报告应仅在暂存时完成,而不是生产。

答案 1 :(得分:-1)

这个查询无法获取表名所以它会发生尝试首先回显$ updatesql并检查查询获取表名