MySQL查询插入成功但返回false

时间:2016-05-13 12:05:27

标签: php jquery mysql json ajax

问题是..我尝试从php解析json ..这是jquery代码:

$.post( "confirmsignup.php", $("#signupform").serialize()).always(function( data ) {
    alert(data.msg);
}, "json");

PHP代码:

if (isset($_POST['gender'])&&isset($_POST['fname'])&&isset($_POST['sname'])&&isset($_POST['username'])&&isset($_POST['dob'])) {
    $gender=secureing($_POST['gender']);
    $fname=secureing($_POST['fname']);
    $sname=secureing($_POST['sname']);
    $username=secureing($_POST['username']);
    $email=secureing($_POST['email']);
    $dob=secureing($_POST['dob']);
    if (isset($_POST['agree'])&&isset($_POST['pass'])&&isset($_POST['repass'])) {
        $pass=secureing($_POST['pass']);
        if ($_POST['pass']==secureing($_POST['repass'])) {
            $query = "INSERT INTO users VALUES('$username', '$gender', '$fname', '$sname', '$email', '".md5($pass)."', '$dob')";
            if(!($query_run = mysql_query($query))){
                $msg = "error";
            }else{
                $msg = "complete";
            }
        }
    }
}
header('Content-Type: application/json');
?>
{
"msg": "<?php echo $msg ." - ". $query; ?>"
}

secureing()用于在escape_string之后返回字符串。 $msg假设返回字符串“complete”...但它返回“error”.. 但是在phpmyadmin中,查询已成功执行.. but something not right at userdob

我认为没有错误......我的错误是什么?请帮助..

4 个答案:

答案 0 :(得分:1)

很久以前我也有同样的问题!

它是因为你没有表中的任何AI主键!

在表格中添加这样的字段:id INT Primary Key Auto Increment。 这会有效!

并迁移到mysqli或pdo以获得更好的安全性和支持! ;)

答案 1 :(得分:0)

是否可以使用您的代码更改以下代码,我已使用mysql_insert_id检查是否插入了记录。

$query = "INSERT INTO users VALUES('$username', '$gender', '$fname', '$sname', '$email', '".md5($pass)."', '$dob')";
$query_run = mysql_query($query);
$id        = mysql_insert_id();
if($id > 0)
{
    $msg = "complete";
}
else
{
    $msg = "error";
}

它可能对你有帮助。

答案 2 :(得分:0)

尝试我的代码似乎你提出了错误的条件

app.get('*', function(req, res){
    res.sendFile(__dirname + '/public/dist/index.html');
});

答案 3 :(得分:0)

我刚刚找到解决方案,将我的php API更改为连接数据库 从:

if(!@mysql_connect('localhost', 'root', '')||!@mysql_select_db('knewit')){
    die("something not right");
}

为:

    $mysqli = new mysqli("localhost", "root", "", "knewit");

之后,我将执行方法从mysql_query更改为$mysqli->query 我还将我的jquery post方法从always更改为done。 最后的代码是这样的。
jQuery脚本:

$.post( "confirmsignup.php", $("#signupform").serialize()).done(function( data ) {
                alert(data.msg);
            }, "json");

PHP脚本:

        if (isset($_POST['agree'])&&isset($_POST['pass'])&&isset($_POST['repass'])) {
        $passs=secureing($_POST['pass']);
        if ($_POST['pass']==secureing($_POST['repass'])) {
            $query = "INSERT INTO users VALUES('$username', '$gender', '$fname', '$sname', '$email', '$passs', '$dob')";
            if(!($query_run = $mysqli->query($query))){
                $msg = "error";
            }
            else
            {
                $msg = "complete";
            }
        }
    }
}
header('Content-Type: application/json');
$arrayName = array('msg' => $msg );
echo json_encode($arrayName);
谢谢你回答我的问题。我真的很感激。