mysql更新查询将多个条目插入单列时出错


Error in mysql update query insterting multiple entries into single column

我在尝试插入/更新具有多个条目的单个字段时出错。

这是数据库方案:

id INT(8) NOT NULL auto_increment,
name VARCHAR(64),
hobby VARCHAR(500)

HostServer Php版本为5

以下是我的表单代码:-

<form method=post>
<label>name</label>
<input type=text name=name>
<label>hobby</label>
<select name="hobby[]"  multiple="multiple">
<option value=1>gardening
<option value=2>Music
<option value=3>Movies
<option value=4>Games
</select>
</form>

现在,为了处理多个值,我使用以下php代码:-

foreach($_POST['hobby'] as $key => $value){
  $_POST['hobby'][$key] = mysql_real_escape_string($value);}
  $hobby = $_POST['hobby'];
  $hobby = "('" . implode("'),('" , $hobby). "')";
  $sql = mysql_query("UPDATE `users` SET name='".$name."',hobby='".$hobby."'");

但是我在输出中得到以下错误:-

您的SQL语法有错误;请查看与MySQL服务器版本相对应的手册,了解第…行"2")、("3")附近要使用的正确语法。。。。

我知道这是与爱好领域有关的条目,但我找不到方法纠正它。任何帮助都将不胜感激。

试着帮助自己

更改这条线路

 $sql = mysql_query("UPDATE `users` SET name='".$name."',hobby='".$hobby."'");

用于调试到

 $query = "UPDATE `users` SET name='".$name."',hobby='".$hobby."'";
 echo $query;
 die;

之后,您可以看到您的查询无效。检查错误并修复内爆

数据库模式看起来有点奇怪,但它不起作用的唯一原因是您需要转义要输入数据库的单引号。这是用前面的"''"完成的

$hobby = "(''" . implode("''),(''" , $hobby). "'')";

不过,还有其他问题需要考虑,例如,由于您没有指定where子句,因此该语句将更新数据库中的每个记录。

您也没有将name字段的内容传递给SQL语句。你应该知道:

$name to $_POST['name']