0
//Successful connection to $db

function insert_users($db, $username, $password, $email)
{
    echo "FUNCTION CALLED"; //This is outputted successfully

    $query = "INSERT INTO `users` (`id`, `username`, `password`, `email`) VALUES ('', ?, ?, ?)";
    $stmt = mysqli_stmt_init($db);

    if(mysqli_stmt_prepare($stmt, $query))
    {
        echo "QUERY PREPARED"; // rest of code was snipped (will put up upon request)
    } else {
        echo "QUERY DENIED"; //This is outputted successfully
    }
}


//The $user $pass and $mail are defined and then the function is called

insert_users($db, $user, $pass, $mail);

数据库结构:

testdb (database)
    -> users (table)
        -> id            //Primary key, unique key
        -> username      //unique key
        -> password
        -> email

为什么查询不通过它的操作?它回显“查询被拒绝”而不是“查询准备”。我相信该查询无效。如果需要更多信息,很乐意编辑此问题

编辑

我添加了

mysqli_stmt_error($stmt);什么都没有发生之后echo "QUERY DENIED"; ……

编辑 2

$server = 'localhost';
$user = 'root';
$password = '';
$databse = 'testdb';

$db = @mysqli_connect($server, $user, $password, $database) or die("Could not connect to Database server. Please inform an administrator");

这是我的数据库设置。我是否将变量放在引号中?

4

2 回答 2

2

如果id是 auto_increment 列,则可以将其从插入中删除

INSERT INTO `users` (`username`, `password`, `email`) VALUES (?, ?, ?)

你有一个错字$databse = 'testdb';。将其重命名为$database.

于 2012-12-27T23:57:37.120 回答
2

我想这是因为你总是试图输入一个空字符串作为你的主键(id)。如果该字段是自动递增字段,则您甚至都不应该尝试为其设置值。

$query = "INSERT INTO `users` (`username`, `password`, `email`) VALUES (?, ?, ?)";
于 2012-12-27T23:58:06.033 回答