【问题标题】:SQL syntax error [PHP|MYSQL]SQL 语法错误 [PHP|MYSQL]
【发布时间】:2012-07-19 21:06:10
【问题描述】:

我今天在我的网站的公开个人资料上工作,但我遇到了问题。

我输入了所有信息,但是当我按下提交时,我得到:

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 3 行的“WHERE id=1”附近使用正确的语法

代码:

 // contact to database

/// connection is OK 

//Get data in local variable
$v_name=$_POST['name'];
$v_age=$_POST['age'];
$v_job=$_POST['job'];
$v_interes=$_POST['interes'];
$v_hobbies=$_POST['hobbies'];
$v_family=$_POST['family'];
$v_pub_mail=$_POST['pub_mail'];
$v_profimg=$_POST['profimg'];
$v_about=$_POST['about'];

// check for null values
if ($v_name==""  /*or $v_msg==""*/)
echo "All fields must be entered, hit back button and re-enter information";
else{
$query="insert into user(name,pub_mail,age,job,interes,hobbies,family,about) values ('$v_name','$v_age','$v_job','$v_interes','$v_hobbies','$v_family','$v_pub_mail','$v_profimg','$v_about') WHERE id='$usrid'";
mysql_query($query)  or die(mysql_error());
echo "Your profile was updated .";
}

【问题讨论】:

  • 谈谈注射风险。尝试在插入之前清理您的输入。或者更好的是,使用 PDO 准备好的语句。
  • 附带说明,您将九个值插入到八列中。你可能想检查一下。
  • 其中一个字段出现故障。
  • 我会重新检查并尝试修复它!感谢您的帮助。

标签: php mysql session syntax


【解决方案1】:

INSERT 没有WHERE 子句。如果您需要更新现有记录,那么您应该改用UPDATE

【讨论】:

    【解决方案2】:

    您不应将WHERE 子句与INSERT 一起使用。

    $query="insert into user(name,pub_mail,age,job,interes,hobbies,family,about) values ('$v_name','$v_age','$v_job','$v_interes','$v_hobbies','$v_family','$v_pub_mail','$v_profimg','$v_about');
    

    我认为您想进行 UPDATE 而不是 INSERT ...

    (顺便说一下,你的插入/更新不安全,别忘了使用addslashes

    【讨论】:

    • 如果我不使用 where ,那他如何将数据插入到我想要的配置文件中?
    • @GerculyRobert 没有将数据插入“您想要的配置文件”这样的事情。您的想法是通过 INSERTing $usridid 作为您的 INSERT 声明的一部分来实现的。
    • @GerculyRobert 等一下。您的表单看起来像是用于向数据库添加条目,而不是更改现有条目。确保 UPDATEing 一个已经存在的条目确实是您想要的,而不仅仅是输入一个具有现有 ID 的新条目。
    • 感谢您的关注,但我要等待这个脚本一段时间。我将开始学习 php 和 PDO 。我的流量交换脚本很旧,我想我需要更新它。
    猜你喜欢
    • 1970-01-01
    • 2014-10-25
    • 2016-02-16
    • 1970-01-01
    • 1970-01-01
    • 2018-01-11
    • 1970-01-01
    • 2013-03-13
    • 2011-08-08
    相关资源
    最近更新 更多