无法从PHP插入MYSQL中的任何记录

时间:2014-06-27 12:00:10

标签: php mysql

所以我正在尝试开发一个应用程序,我需要一个API,所以我现在正在尝试PHP,以便将我的变量从应用程序传递给MYSQL。我首先尝试$ _GET,看看是否一切正常。我试图通过MYSQL Workbench将变量传递到数据库,然后从应用程序传递到工作正常。但是,当我倒空桌子并再试一次它没有用!所以我猜我的循环对我的表是空的这个事实反应不好(?)

这是检查电子邮件和用户名的代码(如果存在),如果没有,则插入变量:

$result = 'notSet';


$query=mysql_query("SELECT * FROM project");

while ($row = mysql_fetch_assoc($query)) {
     if(strcmp($row['email'],$email)==0){ //strcmp uses two strings and it returns an integer, if 0 then no differences if more than 0 then there are
        $result = 'Email exists';
    }else{
        if(strcmp($row['username'],$username)==0){
        $result = 'Username exists';
    }else{          
        //encryption
        $insert = mysql_query("INSERT INTO project VALUES ('$userid', '$fullname','$username','$password','$course','$year','$age','$email')");
        $result = 'Registered';
        session_start();
        $session = session_id();
        $SESSION['username']=$username;
    }
}
}

任何想法??

4 个答案:

答案 0 :(得分:3)

你的桌子是空的。 $ query返回false。因此,您的循环不会被执行。您应该像这样更改代码:

if($query){
    while(){
       //check username and email 
    }
}
else{
     // execute insert query
}

你可以尝试这段代码:

$result = 'notSet';

$query  = mysql_query("SELECT * FROM project WHERE email = '$email' OR username = '$username' ");

if(mysql_num_rows($query) === 0 ){
    $insert = mysql_query("INSERT INTO project VALUES ('$userid', '$fullname','$username','$password','$course','$year','$age','$email')");
    $result = 'Registered';
    session_start();
    $session = session_id();
    $SESSION['username']=$username;
}
else{
    $result = 'Username or Email exists';
}

答案 1 :(得分:1)

仅当字段类型不是整数类型时,才应添加单引号'。例如,如果userid字段是整数类型而其余字段不是整数类型,则查询将是

$insert = mysql_query("INSERT INTO project VALUES ($userid, '$fullname','$username','$password','$course','$year','$age','$email')") or die(mysql_error());

感谢

答案 2 :(得分:1)

首先:你应该切换到PDO或mysqli,因为不推荐使用mysql_ *函数。请按照Shais评论中的链接进行操作。

要完成INSERT,您必须改变逻辑。现在使用您的代码,永远不会为空结果集执行它。你可以这样做:

$query=mysql_query("SELECT * FROM project");

if (mysql_num_rows($query) > 0) {
    // we've got results, let's loop through the resultset
    while($row = mysql_fetch_assoc($query)) {
        // do something with the result
    }
}
else {
    // we've got no results, 
    // do the insert
}

mysql_query将返回SELECT类型查询的资源。资源在PHP中评估为true。您可以使用mysql_num_rows()来检查结果集是否为空。

摘录链接手册:

  

使用mysql_num_rows()来查找为a返回的行数   SELECT语句

PS:请考虑红色框的内容。

答案 3 :(得分:0)

<?php
     $query=mysql_query("INSERT INTO project set id=$userid,
                                               'fullname'=$fullname,
                                               'username'=$username,
                                               'password'=$password,
                                               'course'=$course,
                                               'year'=$year,
                                               'age'=$age,
                                               'email'=$email
                        ");
?>