数据未使用 php 函数进入 wampserver sql 数据库
Data not entering into wampserver sql database using php functions
这是 php 代码。我也是 php 和查询的新手,我的查询错误是因为还是任何逻辑错误,因为数据没有反映在名为用户的 table 中。 registration.php 也包括在内。初学者php难以理解,你能指出错误吗?
<?php
//connect to the database
$db=mysqli_connect('localhost','root', '','register') or die("not connected");
if($db){
echo "connection s";
}
global $errors;
global $sql;
//if next bustton is clicked
if(isset($_POST['Next'])){
$first =mysql_real_escape_string($_POST['first name']);
$last =mysql_real_escape_string($_POST['last name']);
$regno =mysql_real_escape_string($_POST['reg no']);
//all fields filled
if(empty($first)){
array_push($errors,"First name is required");
}
if(empty($last)){
array_push($errors,"Last name is required");
}
if(empty($regno)){
array_push($errors,"Registration number is required");
}
//error free then there are no errors,save it in database
if(count($errors)==0){
$sql="insert into users (first name, last name, regno) values ('$first', '$last', '$regno')";
$query=mysqli_query($db,$sql);
if($query){
echo "query inserted";
}
}
}
?>
这里主要registration.php开始
<?php include('server.php'); ?>
<!DOCTYPE html>
<html>
<head>
<title>Registration</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
<div class="wrap">
<h2>Book Bank Registration</h2>
<form action="registration.php" method="POST">
<?php include('errors.php'); ?>
<div class="form-group">
<label>First Name</label>
<input type="text" class="form-control" name="firstname">
</div>
<div class="form-group">
<label>Last Name</label>
<input type="text" class="form-control" name="lastname">
</div>
<div class="form-group">
<label>Registration No</label>
<input type="text" class="form-control" name="regno">
</div>
<div class="form-group">
<!--label for="next">Next</label-->
<input type="submit" value="Next" class="form-control" name="next">
</div>
</form>
</div>
</body>
</html>
这里的方法是POST
使用 mysql_real_escape_string 会导致 mysqli_connect 数据库出错...
而是使用 mysqli_real_escape_string($connection,$field);
现在试试 mysqli_query($db,$sql) or die(mysqli_error($db)).
<?php
//connect to the database
$db=mysqli_connect('localhost','root', '','register') or die("not connected");
if($db){
echo "connection s";
}
global $errors;
global $sql;
if ($_SERVER["REQUEST_METHOD"] == "POST") {
//if next bustton is clicked
if(isset($_POST['next'])){
$first =mysqli_real_escape_string($db,$_POST['firstname']);
$last =mysqli_real_escape_string($db,$_POST['lastname']);
$regno =mysqli_real_escape_string($db,$_POST['regno']);
//all fields filled
if(empty($first)){
array_push($errors,"First name is required");
}
if(empty($last)){
array_push($errors,"Last name is required");
}
if(empty($regno)){
array_push($errors,"Registration number is required");
}
var_dump($errors);
echo "<br/>Count of errors ".count($errors);
//error free then there are no errors,save it in database
if(count($errors)==0){
$sql="insert into users (firstname, lastname, regno) values ('$first', '$last', '$regno')";
$query=mysqli_query($db,$sql);
if($query){
echo "query inserted";
}
else{
echo mysqli_error($db);
}
}
else{
echo "Errors Variable.";
}
}
else{
echo "No Post Done";
}
}
尝试用 mysqli_error():
输出你的错误信息
<?php
//...
$query = mysqli_query($db, $sql);
if (!$query) {
echo mysqli_error($db);
}
//...
使用
$db->real_escape_string
而不是
mysql_real_escape_string($_POST['first name']);
<?php
//connect to the database
$db=mysqli_connect('localhost','root', '','register') or die("not connected");
if($db){
echo "connection s";
}
global $errors;
global $sql;
//if next bustton is clicked
if(isset($_POST['Next'])){
$first =$db->real_escape_string($_POST['first name']);
$last =$db->real_escape_string($_POST['last name']);
$regno =$db->real_escape_string($_POST['reg no']);
//all fields filled
if(empty($first)){
array_push($errors,"First name is required");
}
if(empty($last)){
array_push($errors,"Last name is required");
}
if(empty($regno)){
array_push($errors,"Registration number is required");
}
//error free then there are no errors,save it in database
if(count($errors)==0){
$sql="insert into users (first name, last name, regno) values ('$first', '$last', '$regno')";
$query=mysqli_query($db,$sql);
if($query){
echo "query inserted";
}
}
}
尝试编辑代码:
$_POST['first name'] => $_POST['first_name']
$_POST['last name'] => $_POST['last_name']
$_POST['reg no'] => $_POST['reg_no']
$sql="insert into users (first name, last name, regno) values ('$first', '$last', '$regno')";
至
$sql="insert into users (first_name, last_name, regno)
values ('$first', '$last', '$regno')";
first name
不是MySQL中用户table的字段,应该是first_name
或firstname
,[=15也是一样=] 和 reg no
这是 php 代码。我也是 php 和查询的新手,我的查询错误是因为还是任何逻辑错误,因为数据没有反映在名为用户的 table 中。 registration.php 也包括在内。初学者php难以理解,你能指出错误吗?
<?php
//connect to the database
$db=mysqli_connect('localhost','root', '','register') or die("not connected");
if($db){
echo "connection s";
}
global $errors;
global $sql;
//if next bustton is clicked
if(isset($_POST['Next'])){
$first =mysql_real_escape_string($_POST['first name']);
$last =mysql_real_escape_string($_POST['last name']);
$regno =mysql_real_escape_string($_POST['reg no']);
//all fields filled
if(empty($first)){
array_push($errors,"First name is required");
}
if(empty($last)){
array_push($errors,"Last name is required");
}
if(empty($regno)){
array_push($errors,"Registration number is required");
}
//error free then there are no errors,save it in database
if(count($errors)==0){
$sql="insert into users (first name, last name, regno) values ('$first', '$last', '$regno')";
$query=mysqli_query($db,$sql);
if($query){
echo "query inserted";
}
}
}
?> 这里主要registration.php开始
<?php include('server.php'); ?>
<!DOCTYPE html>
<html>
<head>
<title>Registration</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
<div class="wrap">
<h2>Book Bank Registration</h2>
<form action="registration.php" method="POST">
<?php include('errors.php'); ?>
<div class="form-group">
<label>First Name</label>
<input type="text" class="form-control" name="firstname">
</div>
<div class="form-group">
<label>Last Name</label>
<input type="text" class="form-control" name="lastname">
</div>
<div class="form-group">
<label>Registration No</label>
<input type="text" class="form-control" name="regno">
</div>
<div class="form-group">
<!--label for="next">Next</label-->
<input type="submit" value="Next" class="form-control" name="next">
</div>
</form>
</div>
</body>
</html>
这里的方法是POST
使用 mysql_real_escape_string 会导致 mysqli_connect 数据库出错... 而是使用 mysqli_real_escape_string($connection,$field);
现在试试 mysqli_query($db,$sql) or die(mysqli_error($db)).
<?php
//connect to the database
$db=mysqli_connect('localhost','root', '','register') or die("not connected");
if($db){
echo "connection s";
}
global $errors;
global $sql;
if ($_SERVER["REQUEST_METHOD"] == "POST") {
//if next bustton is clicked
if(isset($_POST['next'])){
$first =mysqli_real_escape_string($db,$_POST['firstname']);
$last =mysqli_real_escape_string($db,$_POST['lastname']);
$regno =mysqli_real_escape_string($db,$_POST['regno']);
//all fields filled
if(empty($first)){
array_push($errors,"First name is required");
}
if(empty($last)){
array_push($errors,"Last name is required");
}
if(empty($regno)){
array_push($errors,"Registration number is required");
}
var_dump($errors);
echo "<br/>Count of errors ".count($errors);
//error free then there are no errors,save it in database
if(count($errors)==0){
$sql="insert into users (firstname, lastname, regno) values ('$first', '$last', '$regno')";
$query=mysqli_query($db,$sql);
if($query){
echo "query inserted";
}
else{
echo mysqli_error($db);
}
}
else{
echo "Errors Variable.";
}
}
else{
echo "No Post Done";
}
}
尝试用 mysqli_error():
输出你的错误信息<?php
//...
$query = mysqli_query($db, $sql);
if (!$query) {
echo mysqli_error($db);
}
//...
使用
$db->real_escape_string
而不是
mysql_real_escape_string($_POST['first name']);
<?php
//connect to the database
$db=mysqli_connect('localhost','root', '','register') or die("not connected");
if($db){
echo "connection s";
}
global $errors;
global $sql;
//if next bustton is clicked
if(isset($_POST['Next'])){
$first =$db->real_escape_string($_POST['first name']);
$last =$db->real_escape_string($_POST['last name']);
$regno =$db->real_escape_string($_POST['reg no']);
//all fields filled
if(empty($first)){
array_push($errors,"First name is required");
}
if(empty($last)){
array_push($errors,"Last name is required");
}
if(empty($regno)){
array_push($errors,"Registration number is required");
}
//error free then there are no errors,save it in database
if(count($errors)==0){
$sql="insert into users (first name, last name, regno) values ('$first', '$last', '$regno')";
$query=mysqli_query($db,$sql);
if($query){
echo "query inserted";
}
}
}
尝试编辑代码:
$_POST['first name'] => $_POST['first_name']
$_POST['last name'] => $_POST['last_name']
$_POST['reg no'] => $_POST['reg_no']
$sql="insert into users (first name, last name, regno) values ('$first', '$last', '$regno')";
至
$sql="insert into users (first_name, last_name, regno)
values ('$first', '$last', '$regno')";
first name
不是MySQL中用户table的字段,应该是first_name
或firstname
,[=15也是一样=] 和 reg no