我是php的新手并且在项目上遇到了问题。我创建了一个数据库和一个表,创建了注册页面,一切似乎都没问题。但是,注册页面上输入的所有细节都没有出现在database.please可以帮助调试吗?php代码如下所示
<?php
session_start();
require_once('config.php');
?>
<?php
if (isset($_POST['register'])){
$name = $_POST['name'];
$email = $_POST['email'];
$password = $_POST['password'];
$cpassword = $_POST['confirm_password'];
$sql = $con->query("INSERT into 'users' (id, name, email,
password,confirm_password) VALUES ('', {$name}', '{$email}',
'{$password}', '{$cpassword}')");
die ("cannot connect to database;");
}
?>
CONFIG FILE:
<?php
$con = mysqli_connect("localhost", "root", "","knux");
?>
答案 0 :(得分:0)
您正在混合程序和面向对象的方法。 mysqli_connect
返回句柄,而不是对象,因此您无法使用$con->something
。使用它来创建数据库连接:
$con = new mysqli('localhost', 'root', '', 'knux');
答案 1 :(得分:0)
“n”
中缺少单引号('', {$name}', '{$email}', '{$password}', '{$cpassword}')
应该是:
('', '{$name}', '{$email}', '{$password}', '{$cpassword}')
您的html可能存在问题,但您可以尝试这些:
确保您的字段来自HTML,您可以使用
执行此操作print_r($_POST);
如果您看到所有输入,则错误不是来自HTML。
在这种情况下,您实际上不需要在一个文件中包含两个PHP标记,而不是
<?php
session_start();
require_once('config.php');
?>
<?php
if (isset($_POST['register'])){
$name = $_POST['name'];
...
?>
你可以:
<?php
session_start();
require_once('config.php');
if (isset($_POST['register'])){
$name = $_POST['name'];
...
?>
在引用数据库元素(如表格)时使用反引号,而不是:
INSERT into 'users' (id, name, email, password,confirm_password)
做的:
INSERT into `user` (`id`, `name`, `email`, `password`,`confirm_password`)
在mysql_error();
中使用or die();
,以便您拥有:
or die(mysql_error());
这应该告诉你究竟是什么问题。
由于您仍然在学习,所以不推荐使用PDO
而不是PHP的mysql_
函数。如果您对此感觉太满意,可以使用mysqli_
功能代替。 I
完全不同;)
答案 2 :(得分:-1)
缺少单引号{$name}'
此外,如果id
为自动递增,则可以从INSERT
语句中删除
正确方式:
$sql = $con->query("INSERT into `users` (name, email,
password,confirm_password) VALUES ('{$name}', '{$email}',
'{$password}', '{$cpassword}')");