1

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

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)

如果您能帮我解决这个问题,我们将不胜感激。这个社区不仅对像我这样的初学者,而且对有时需要一点点努力的专家都给予了很大的支持。

4

5 回答 5

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" />
于 2013-07-09T05:06:03.790 回答
0

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

于 2013-07-09T04:46:09.430 回答
0

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

或者

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

- 编辑 - -

mail_to 可以接受 int

所以,

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

于 2013-07-09T04:50:53.497 回答
0
Here $sent_to is blank so there is a error

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

       $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);
于 2013-07-09T04:51:01.143 回答
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());

?>
于 2013-08-27T10:14:21.020 回答