大家好,我在000webhost上建立了一个表格。我用id、姓名、用户名、年龄和密码列来设置它。出于某种原因,用户名没有出现在表中,当我运行代码的寄存器,我不知道错误是什么。下面是Register.php的代码:
<?php
$con = mysqli_connect("*****", "****", "*****", "****");
$name = $_POST["name"];
$age = $_POST["age"];
$username = $_POST["username"];
$password = $_POST["password"];
$statement = mysqli_prepare($con, "INSERT INTO user (name, username, age, password) VALUES (?, ?, ?, ?)");
mysqli_stmt_bind_param($statement, "siss", $name, $username, $age, $password);
mysqli_stmt_execute($statement);
$response = array();
$response["success"] = true;
echo json_encode($response);
?>
正如我最初在注释中所说:
您正在尝试使用i
参数为整数插入字符串。
顺序在绑定时很重要。
您需要将当前参数更改为ssis
,同时确保age列确实是整数类型。
检查查询中的错误会告诉你它。
- http://php.net/manual/en/mysqli.error.php
我也希望你没有存储纯文本密码。使用password_hash()
如果你打算继续生活在这个
- http://php.net/manual/en/function.password-hash.php
很抱歉告诉你这个坏消息,但如果是这样的话,你会被黑的。
使用准备好的语句而不使用安全的密码散列函数并不能保证您的站点不被入侵。
bind语句的格式说明符不正确。修改这一行
mysqli_stmt_bind_param($statement, "siss", $name, $username, $age, $password);
mysqli_stmt_bind_param($statement, "ssis", $name, $username, $age, $password);
这些说明符需要匹配列和变量类型。S
for string和i
for Int