关于插入函数和POST函数的SQL语法错误

时间:2013-07-09 04:40:10

标签: php mysql

很抱歉再次受到打扰,但是我的编码似乎面临着一些麻烦。 出于某种原因,我出现以下错误:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' '', 'No Subject', 0, 'Jul 8, 2013 09:33 PM', 0)' at line 1

每当我执行以下命令时:

        $date_posted=date("M j, Y h:i A", TIME());
$sent_to=$_POST["member_id"];
    $sent_by=$_SESSION["member_id"];
    $subject=addslashes($_POST["subject"]);
    if($subject==Null)
    {
        $subject="No Subject";
    }
    $subject=verify_data($subject);

    $message=addslashes($_POST["message"]);
    $message=verify_data($message);


                    $sql="insert into main";
            $sql.="(member_id";
            $sql.=", mail_to";
            $sql.=", mess_text";
            $sql.=", subject";
            $sql.=", deleted";
            $sql.=", date_posted";
            $sql.=", mess_read)";

            $sql.=" values($sent_by";
            $sql.=", $sent_to";
            $sql.=", '$message'";
            $sql.=", '$subject'";
            $sql.=", 0";
            $sql.=", '$date_posted'";
            $sql.=", 0)";
            $result=mysql_query($sql);
            print mysql_error();
if($result)
            {
                            print "<font color='red'>Message sent successfully.</font>";
            }
            else
            {
                            //print "<font color='red'>A system error has happened, be patient.</font>";
            }

如果我是正确的,问题应该在编码值或POST函数本身,问题是,我已经从_POST更改为HTTP_POST_VARS,并没有太多帮助。

虽然我会说邮件的MYSQL值如下:

member_id type int(11)
mail_to type int(11)
mess_text type blob
deleted type int(11)
subject type blob
date_posted type varchar(255)
mess_read type int(11)

结果:echo $ sql:

insert into mail(member_id, mail_to, mess_text, subject, deleted, date_posted, mess_read) values(2, , '', 'No Subject', 0, 'Jul 8, 2013 09:43 PM', 0)

如果你能帮助我解决这个问题,那么我们非常感激。 这个社区不仅为像我这样的初学者提供了很大的支持,也为那些有时需要努力的专家提供了很大的支持。

5 个答案:

答案 0 :(得分:1)

表单元素必须有name才能在表单提交时访问它们。所以为了使用 -

$sent_to=$_POST["member_id"];

你必须有一个看起来像这样的元素 -

<input name="member_id" />

在使用JQuery作为示例时,通常只包含id -

是很常见的
<input type="hidden" id="project-id" />  // from the autocomplete source code example

这适用于javascript / JQuery,因为您正在使用id,但在php中您需要添加名称 -

<input type="hidden" id="member_id" name="member_id" />

答案 1 :(得分:0)

如果您的$sent_to$sent_by变空,则会失败。基于您发布的SQL字符串,似乎$ sent_to为空,要么检查以确保该值存在,要么在值周围加上单引号,以便您可以将空值传递给数据库,

答案 2 :(得分:0)

  

$ sent_to =(isset($ _POST [“member_id”])&amp;&amp; $ _POST [“member_id”]!='')?   $ _POST [“member_id”]:'';

  

$ sent_to =(isset($ _POST [“member_id”])&amp;&amp; $ _POST [“member_id”]!='')?   $ _POST [“member_id”]:null; //如果它接受null

- 编辑---

  

mail_to可以接受int

所以,

  

$ sent_to =(isset($ _POST [“member_id”])&amp;&amp; $ _POST [“member_id”]!='')?   $ _POST [“member_id”]:0; //它可以是零或任何你想要的默认值

答案 3 :(得分:0)

Here $sent_to is blank so there is a error

check for the $_POST["member_id"] value.

AND

       $sql="insert into main";
        $sql.="(member_id";
        $sql.=", mail_to";
        $sql.=", mess_text";
        $sql.=", subject";
        $sql.=", deleted";
        $sql.=", date_posted";
        $sql.=", mess_read)";

        $sql.=" values($sent_by";
        $sql.=", $sent_to";
        $sql.=", '$message'";
        $sql.=", '$subject'";
        $sql.=", 0";
        $sql.=", '$date_posted'";
        $sql.=", 0)";
        $result=mysql_query($sql);


    TO


    $sql="insert into main";
    $sql.="(member_id";
    $sql.=", mail_to";
    $sql.=", mess_text";
    $sql.=", subject";
    $sql.=", deleted";
    $sql.=", date_posted";
    $sql.=", mess_read)";

    $sql.=" values('$sent_by'";
    $sql.=", '$sent_to'";
    $sql.=", '$message'";
    $sql.=", '$subject'";
    $sql.=", 0";
    $sql.=", '$date_posted'";
    $sql.=", 0)";
    $result=mysql_query($sql);

答案 4 :(得分:0)

   <?php
    /*$db_host='localhost';
    $db_user='root';
    $db_pass='';
    $db_name='example';*/

    $dbc = mysql_connect("localhost","root","admin123") or die('Connection to database failed');
    mysql_select_db("example",$dbc);
    //$fname =$_POST['first_name'];
    //$lname =$_POST['last_name'];

    $sql="INSERT INTO table(first_name,last_name) VALUES('Prashant','Bhatta')";

    mysql_query($sql,$dbc) or die (mysql_error());

?>