Php 我不知道';不会出现任何错误,但不会将数据插入数据库
我正在做一个注册网站,我没有得到任何错误,但它不会插入到数据库中的数据 我几乎什么都试过了,但就是想不出来 /配置文件已经是必需的,我已经把它放在我的header.php文件中,这是我创建的每个文件自动需要的,所以它不是配置错误/Php 我不知道';不会出现任何错误,但不会将数据插入数据库,php,mysql,database,mysqli,Php,Mysql,Database,Mysqli,我正在做一个注册网站,我没有得到任何错误,但它不会插入到数据库中的数据 我几乎什么都试过了,但就是想不出来 /配置文件已经是必需的,我已经把它放在我的header.php文件中,这是我创建的每个文件自动需要的,所以它不是配置错误/ 您不能使用未生成的变量,因此代码顺序应为: $sql = "INSERT INTO registrations (firstname, lastname, username, email, password, age, city, address, phone, ge
您不能使用未生成的变量,因此代码顺序应为:
$sql = "INSERT INTO registrations (firstname, lastname, username, email, password, age, city, address, phone, gender, purpose, hash) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)";
$stmt = $mysqli->prepare($sql);
$firstname = $mysqli>real_escape_string($_POST["firstname"]);
$lastname = $mysqli->real_escape_string($_POST["lastname"]);
$username = $mysqli->real_escape_string($_POST["username"]);
$email = $mysqli->real_escape_string($_POST["email"]);
$password1 = $mysqli->real_escape_string($_POST["password"]);
$age = $mysqli->real_escape_string($_POST["age"]);
$address = $mysqli->real_escape_string($_POST["address"]);
$city = $mysqli->real_escape_string($_POST["city"]);
$phone = $mysqli->real_escape_string($_POST["phone"]);
$gender = $mysqli->real_escape_string($_POST["gender"]);
$purpose = $mysqli->real_escape_string($_POST["purpose"]);
$hash = md5( rand(0,1000) );
$stmt->bind_param("ssssiissiiis", $firstname, $lastname, $username, $email, $password1, $age, $city, $address, $phone, $gender, $purpose, $hash);
$stmt->execute();
还要注意,准备查询时不需要real\u escape\u string
。但是,您可以在应为整数的变量前面使用(int)
。您可能还需要检查变量的类型i
或s
而不是($\u POST[“firstname”])!=“”
您可以只使用内置函数:!空($\u POST['firstname'])
$mysqli->real\u escape\u string()
在这种情况下确实是无用的,尤其是当参数已经绑定时;那是双重的无用。它只会给一个相当简单的脚本增加一些噪音。使用isset()和验证$\u POST
!空()
仍然是推荐的。您可能应该在$stmt->execute()之后添加一个结束标记?>
代码>。哈哈,它已经添加了,但我忘了复制并粘贴到stackoverflow上。它先有prepare,然后是bind,然后是赋值,然后是execute,所以顺序看起来是正确的……您的本地代码中是否存在这种拼写错误$mysqli>
是的,它确实存在,但在配置文件中,第一个示例使它们不正常?@Paul070707也许您可以强制PHP显示错误。放置错误报告(E_ALL);ini_集('display_errors','1')代码>在您的页面顶部的某个位置script@Paul070707除了尝试代码
之外,我建议您尝试防御性编程,进行错误检查、日志记录、查看apache和php日志、启用php错误报告等……绑定参数时无需使用real_escape_string
,这是更好的方法,顺便说一句,什么是双重无用?@NullPoiаteа无用的最高级,同时尽量不使用粗俗的语言。
$sql = "INSERT INTO registrations (firstname, lastname, username, email, password, age, city, address, phone, gender, purpose, hash) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)";
$stmt = $mysqli->prepare($sql);
$firstname = $mysqli>real_escape_string($_POST["firstname"]);
$lastname = $mysqli->real_escape_string($_POST["lastname"]);
$username = $mysqli->real_escape_string($_POST["username"]);
$email = $mysqli->real_escape_string($_POST["email"]);
$password1 = $mysqli->real_escape_string($_POST["password"]);
$age = $mysqli->real_escape_string($_POST["age"]);
$address = $mysqli->real_escape_string($_POST["address"]);
$city = $mysqli->real_escape_string($_POST["city"]);
$phone = $mysqli->real_escape_string($_POST["phone"]);
$gender = $mysqli->real_escape_string($_POST["gender"]);
$purpose = $mysqli->real_escape_string($_POST["purpose"]);
$hash = md5( rand(0,1000) );
$stmt->bind_param("ssssiissiiis", $firstname, $lastname, $username, $email, $password1, $age, $city, $address, $phone, $gender, $purpose, $hash);
$stmt->execute();
$sql = "INSERT INTO registrations (firstname, lastname, username, email, password, age, city, address, phone, gender, purpose, hash) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)";
$stmt = $mysqli->prepare($sql);
$stmt->bind_param("ssssiissiiis", $_POST["firstname"], $_POST["lastname"], $_POST["username"], $_POST["email"], $_POST["password"], $_POST["age"], $_POST["city"], $_POST["address"], $_POST["phone"], $_POST["gender"], $_POST["purpose"], md5(rand(0,1000)));
$stmt->execute();