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構文にエラーがあります。':username、:email、:password、:salt、:fname、:sname、:country、:dob、:squestion、'の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。

準備ラインに問題があるはずですが、実際には見ていません。

誰かが見たいと思っている場合に備えて、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パラメーターをサポートしていません。また、toの最初のパラメーターmysql_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 に答える