Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我不知道';不会出现任何错误,但不会将数据插入数据库_Php_Mysql_Database_Mysqli - Fatal编程技术网

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

我正在做一个注册网站,我没有得到任何错误,但它不会插入到数据库中的数据

我几乎什么都试过了,但就是想不出来

/配置文件已经是必需的,我已经把它放在我的header.php文件中,这是我创建的每个文件自动需要的,所以它不是配置错误/


您不能使用未生成的变量,因此代码顺序应为:

$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();