参数化SQL:插入不起作用

时间:2014-10-20 04:32:59

标签: php mysql

我正在尝试使用参数化SQL执行INSERT。我是参数化SQL的新手。我的表名是archpedia.full_developers (db.table)

我的联系也很完美。我在我的数据库archpedia上创建了仅具有SELECT, INSERT, UPDATE权限的自定义用户。我甚至用root检查SQL只是为了确认用户权限是否有错误,但是root似乎没有用。

这是我的php:

$query = "INSERT INTO full_developers (fullname, username, email, password, project, phone, token, salt) VALUES (?, ?, ?, ?, ?, ?, ?)";
    $insert_stmt = $mysqli->prepare($query);
    echo "ok?";
    if ($insert_stmt) {
        $insert_stmt->bind_param('sssssiss', $fullname, $username, $email, $password, $project, $phone, $uniqueToken, $random_salt);
        //$insert_stmt->execute();
        // Execute the prepared query.
        echo "check";
        if (! $insert_stmt->execute()) {
            header('Location: ../error.php?err=Registration failure: INSERT');
        }
    }
    //header('Location: ./register_success.php');

我的错误是$insert_stmt->prepape($query);不起作用。我没有得到任何错误。当我在语句回显“检查”以查看天气$insert_stmt是否正常工作时,它永远不会显示。我无法知道我在哪里做错了,所以任何帮助都会感激不尽。

2 个答案:

答案 0 :(得分:2)

首先,如果您有8个值(缺少一个)

 VALUES (?, ?, ?, ?, ?, ?, ?)

为8个值添加8个占位符

 VALUES (?, ?, ?, ?, ?, ?, ?, ?)

错误报告以检查更多错误

答案 1 :(得分:2)

$ query =" INSERT INTO full_developers(fullname,username,email,password,project,phone,token,salt)VALUES(?,?,?,?,?,?,?,?)&# 34 ;;

/ 用此替换您的查询。 /