Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mysql插入查询-语法错误_Php_Mysql - Fatal编程技术网

Php mysql插入查询-语法错误

Php mysql插入查询-语法错误,php,mysql,Php,Mysql,有人能帮我解释一下我的插入语法有什么问题吗? 正在工作,但收到空的查询消息 // values sent from form $first_name=$_POST['first_name']; $last_name=$_POST['last_name']; $email=$_POST['email']; $postcode=$_POST['postcode']; $gender=$_POST['gender']; $yob=$_POST['

有人能帮我解释一下我的插入语法有什么问题吗? 正在工作,但收到空的查询消息

    // values sent from form
    $first_name=$_POST['first_name'];
    $last_name=$_POST['last_name'];
    $email=$_POST['email'];
    $postcode=$_POST['postcode'];
    $gender=$_POST['gender'];
    $yob=$_POST['yob'];

    /*********** CONNECT TO THE DATABASE ******/
    //Step 1 CONNECT TO THE DATABASE
   $db=mysql_connect ("localhost", “db_username, “db_password);
   if (!$db) {
     die("Database connection failed miserably: " . mysql_error());
     }
     //Step2 SELECT THE DATABASE
     $db_select = mysql_select_db(“db_name,$db);
    if (!$db_select) {
    die("Database selection also failed miserably: " . mysql_error());
    }

    echo "Welcome $first_name!";
    echo " Success, connected to database but maybe not the table";

    // Insert data into database
    //##############################I THINK PROBLEM MUST BE HERE IN THIS    INSERT       STATEMENT STATEMENT###################################
    $sql="INSERT INTO newsletter-subscribers(first_name, last_name, email,    postcode, gender,    yob)VALUES('$first_name','$last_name','$email','$postcode','$gender','$yob')";
    if(mysql_query($sql)){
    echo "Records added successfully.";
    } else{
    echo "ERROR: Could not able to execute $sql. " . mysql_error($db);
    }
    $result=mysql_query($sql);

您的表名包含破折号,因此需要将其引用。backtick或back quote字符用于在MySQL中引用符号名称(例如表、列等的名称),因此您需要如下内容:

INSERT INTO `newsletter-subscribers` (first_name, ...

您的表名包含破折号,因此需要将其引用。backtick或back quote字符用于在MySQL中引用符号名称(例如表、列等的名称),因此您需要如下内容:

INSERT INTO `newsletter-subscribers` (first_name, ...
你的问题,

$sql="INSERT INTO newsletter-subscribers(first_name, last_name, email,    postcode, gender,    yob)VALUES('$first_name','$last_name','$email','$postcode','$gender','$yob')";
你的新问题

$sql = "INSERT INTO `newsletter-subscribers` (first_name, last_name, email, postcode, gender, yob) VALUES ('$first_name','$last_name','$email','$postcode','$gender','$yob')";
那么,发生了什么变化

  • 在表名周围添加了记号
  • 删除了不需要使查询更清晰的空格
如果您的表名周围没有背景标记,
MySQL
将其视为时事通讯减去订户。如果这是错误的,请添加勾号以告诉MySQL它是一个表名

编辑1

这可能是复制粘贴错误,但我不确定…


您的db connect也不正确,您没有为其分配任何值,因为您的引号未关闭并且是智能引号

你的连接

$db = mysql_connect ("localhost", “db_username, “db_password);
你的新联系人

$db = mysql_connect("localhost", "db_username"," db_password");
而且

对,

请注意引号中的差异

编辑2

您的代码很容易出错,您仍然在使用
MySQL
,即使它已被弃用,您也应该在准备好的语句中使用
MySQLi
PDO

更不用说您的
$\u POST
数据在未经清理的情况下被传递到查询,您应该开始使用
htmlspecialchars
,这将使它变得更好并防止
XSS

您的查询

$sql="INSERT INTO newsletter-subscribers(first_name, last_name, email,    postcode, gender,    yob)VALUES('$first_name','$last_name','$email','$postcode','$gender','$yob')";
你的新问题

$sql = "INSERT INTO `newsletter-subscribers` (first_name, last_name, email, postcode, gender, yob) VALUES ('$first_name','$last_name','$email','$postcode','$gender','$yob')";
那么,发生了什么变化

  • 在表名周围添加了记号
  • 删除了不需要使查询更清晰的空格
如果您的表名周围没有背景标记,
MySQL
将其视为时事通讯减去订户。如果这是错误的,请添加勾号以告诉MySQL它是一个表名

编辑1

这可能是复制粘贴错误,但我不确定…


您的db connect也不正确,您没有为其分配任何值,因为您的引号未关闭并且是智能引号

你的连接

$db = mysql_connect ("localhost", “db_username, “db_password);
你的新联系人

$db = mysql_connect("localhost", "db_username"," db_password");
而且

对,

请注意引号中的差异

编辑2

您的代码很容易出错,您仍然在使用
MySQL
,即使它已被弃用,您也应该在准备好的语句中使用
MySQLi
PDO



更不用说您的
$\u POST
数据在未经清理的情况下被传递到查询,您应该开始使用
htmlspecialchars
,这将使它变得更好并防止
XSS

在值周围多留一点空白?啊,是的,如果您对SQL注入开放,那么表名将变成一个减法。如果你的任何值包含引号,这将失败。在这里做数学吗<代码>新闻稿订户新闻稿减去订户等于pumpernickel@Dagon那黑麦呢?在值周围多留一点空白?啊,是的,如果您对SQL注入开放,那么表名将变成一个减法。如果你的任何值包含引号,这将失败。在这里做数学吗<代码>新闻稿订户新闻稿减去订户等于pumpernickel@Dagon那黑麦呢?最好不要用连字符!未关闭且为智能引号,不是正确的智能引号,意思是哑的:-0
(“本地主机”、“db\u用户名”、“db\u密码”)
(“本地主机”、“db\u用户名”、“db\u密码”)
(“db\u名称,$db)
(“db\u名称,$db)
dang那些卷曲的引号;-)如果他们真的在使用这些引号的话。以防万一。感谢大家对本脚本的帮助,特别是感谢大家花时间用自己的方式解释。我以前从未在表名之间加过连字符,所以我已经吸取了8个小时的教训,试图找出我做错了什么。我原来的同事de有正确的引语-不知道卷曲的引语是如何粘贴到这里的。Dan Lowe,你也一针见血,这是一个主要问题。现在我可以处理消毒部分了-再次感谢你,祝你有一个美好的一天:-)最好不要使用连字符!不是闭合的,是聪明的引语,不是正确的引语聪明的意思是愚蠢:-0
(“本地主机”、“db\u用户名”、“db\u密码”)至
(“本地主机”、“db\u用户名”、“db\u密码”)
(“db\u名称,$db)
(“db\u名称,$db)
dang那些卷曲的引号;-)如果他们真的在使用这些引号的话。以防万一。感谢大家对本脚本的帮助,特别是感谢大家花时间用自己的方式解释。我以前从未在表名之间加过连字符,所以我已经吸取了8个小时的教训,试图找出我做错了什么。我原来的同事de有正确的引号-不知道卷曲引号是如何粘贴到这里的。Dan Lowe,你也一针见血,这是一个主要问题。现在我可以处理消毒部分了-再次感谢你,祝你有一个美好的一天:-)backtick不是quoteeyes,backtick是你在mysql中引用表名的方式。示例显示了这一点。ok itIt’这只是混淆语法,我同意手册版本:标识符引号字符是反勾(“`”):反勾不是QuoteEyes,反勾是在mysql中引用表名的方式。示例显示。好吧,这只是混淆语法,我同意手册版本:标识符引号字符是反勾(“`”):