我创建了一个html表单,我一直在尝试将用户要填写表单的数据发送到我创建的mysqli数据库。 我创建了数据库,并为我的表单中的6个字段创建了6列。 我写了下面的PHP代码来执行这项工作,但它似乎不起作用......
<?php
//get the form elements and store them in variables
$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$postal = $_POST['postal'];
$acceptance = $_POST['acceptance'];
//establish connection
$con = mysqli_connect('localhost', 'db_user', 'db_password' , 'db_name', 'db_socket');
//on connection failure, throw an error
if(!$con) {
die('Could not connect: '.mysql_error());
}
$sql = 'INSERT INTO db_table1 ( firstname, lastname, email, postal, phone, acceptance )
VALUES ( $_POST[firstname], $_POST[lastname], $_POST[email], $_POST[postal], $_POST[phone], $_POST[acceptance] )' ;
if ($sql) {
echo 'Success';
}
else {
die ('Error');
}
$mysqli->close();
//Redirects to the specified page
header("Location: http://www.example.com/success");
?>
你可以帮帮我吗?问题出在哪里,没有任何东西进入数据库?
答案 0 :(得分:1)
试用此代码
$sql = 'INSERT INTO db_table1 ( firstname, lastname, email, postal, phone,acceptance ) VALUES ( "'.$firstname.'","'.$lastname.'","'.$email.'","'.$postal.'","'.$phone.'","'.$acceptance.'", )' ;
$response= mysqli_query($con,$query);
这会添加mysqli_query
。简而言之,您构建了用于查询的字符串,但没有进行实际查询。
答案 1 :(得分:0)
这里存在很多问题,但最明显的是你将SQL查询定义为一个字符串,测试这个字符串是否存在,显然会这样,然后每天调用它。他们说这是重要的思想,但是当谈到编程时,你必须更明确。
您需要实际执行查询。使用mysqli
这是一个多步骤过程:准备,绑定,执行。之后,如果需要,您可以进行提取。与往常一样,have the documentation open if you're unfamiliar with how to do all of this。这是理解某事的重要一步。
将其更新为使用面向对象的表示法使事情更清晰:
$con = new mysqli('localhost', 'db_user', 'db_password' , 'db_name', 'db_socket');
$stmt = $con->prepare('INSERT INTO db_table1 (firstname, lastname, email, postal, phone, acceptance) VALUES (?,?,?,?,?,?)');
$stmt->bind_param('ssssss',
$_POST[firstname], $_POST[lastname],
$_POST[email], $_POST[postal],
$_POST[phone], $_POST[acceptance]
);
$stmt->execute();
不要忘记在使用'$this'
等单引号的PHP字符串中,不要插入变量,而是使用"$this"
之类的双引号。这是您原始代码中的另一个问题。
答案 2 :(得分:-1)
您的查询字符串中存在问题 请注意,在php中,如果一个字符串被单引号包围(正如你所做的那样),它就会被视为没有插入任何变量
如果字符串包含变量,则应使用双引号
将其包围所以用双引号替换单引号,这将在查询中包含post变量,并测试它可以打印$ sql变量。
现在虽然代码可以工作,但它不是使用mysqli的最佳方式。使用prepossessed查询标准的三个步骤来执行mysqli中的查询以实际获取mysqli的好处,因为直接将变量用于查询字符串会使您的代码容易受到Sql注入攻击
答案 3 :(得分:-2)
您也可以尝试
$sql = "INSERT INTO user (username, email, password, avater) "
. "VALUES ('$username', '$email', '$password', '$avater_path')";