1

我已经看到了许多类似的问题,但是我似乎仍然无法解决问题,如果这可能是重复的,很抱歉。

无论如何这里是代码:

$email = $_POST['emailAddress'];
$username = $_POST['userName'];
$dob = $_POST['dobYear'] . "-" . $_POST['dobMonth'] . "-" . $_POST['dobDay'];
$fname = $_POST['firstName'];
$sname = $_POST['lastName'];
$country = $_POST['country'];
$squestion = $_POST['secretQuestion'];
$sanswer = $_POST['secretAnswer'];


require('db_connect.php');
$insert_stmt = $mysqli->prepare("INSERT INTO users (username, email, password, salt, fname, sname, country, dob, squestion, sanswer) VALUES (:username, :email, :password, :salt, :fname, :sname, :country, :dob, :squestion, :sanswer)");
var_dump($mysqli->error);
$insert_stmt->bind_param(':username', $username); // error is here 
$insert_stmt->bind_param(':email', $email);
$insert_stmt->bind_param(':password', $password);
$insert_stmt->bind_param(':salt', $random_salt);
$insert_stmt->bind_param(':fname', $fname);
$insert_stmt->bind_param(':sname', $sname);
$insert_stmt->bind_param(':country', $country);
$insert_stmt->bind_param(':dob', $dob);
$insert_stmt->bind_param(':squestion', $squestion);     
$insert_stmt->bind_param(':sanswer', $sanswer);     
$insert_stmt->execute();

这是 var_dump 的输出:

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 ':username, :email, :password, :salt, :fname, :sname, :country, :dob, :squestion,' 附近使用正确的语法”

我知道准备线上一定有问题,但是我真的没有看到。

这是 db_connect.php 以防万一有人想查看,但该文件工作正常:

define("HOST", "localhost"); // The host you want to connect to.
define("USER", "sec_user"); // The database username.
define("PASSWORD", "eKcGZr59zAa2BEWU"); // The database password. 
define("DATABASE", "secure_login"); // The database name.

$mysqli = new mysqli(HOST, USER, PASSWORD, DATABASE);

再次抱歉,如果这是重复的,或者我遗漏了一些明显而明显的东西。

4

2 回答 2

2

该类mysqli_stmt不支持命名的 SQL 参数。此外,第一个参数 tomysql_stmt::bind_param()不是 SQL 参数的名称(因为该类mysqli_stmt不支持命名 SQL 参数)。

于 2013-01-27T11:48:31.643 回答
0
$insert_stmt = $mysqli->prepare("INSERT INTO users (username, email, password, salt, fname, sname, country, dob, squestion, sanswer) VALUES (?, ?,?, ?, ?, ?, ?, ?, ?, ?)");

相应地改变你的绑定

于 2013-01-27T11:50:28.133 回答