Php 如何将我的网站连接到MySQL数据库?
下面是我在Sublime中的代码,但是数据库没有被调用Php 如何将我的网站连接到MySQL数据库?,php,mysql,Php,Mysql,下面是我在Sublime中的代码,但是数据库没有被调用 <?php$username="root"; $password="changedpassword";$database="User"; $field1-name=$_POST['name']; $field2-name=$_POST['password']; $field3-name=$_POST['email']; $field4-name=$_POST['sex']; $field5-name=$_POST['school'];
<?php$username="root";
$password="changedpassword";$database="User";
$field1-name=$_POST['name'];
$field2-name=$_POST['password'];
$field3-name=$_POST['email'];
$field4-name=$_POST['sex'];
$field5-name=$_POST['school'];
$field6-name=$_POST['birth'];
mysql_connect(localhost,$username,$password);
@mysql_select_db($database) or die( "Unable to select database");
$query = "INSERT INTO create_user (name, password, email, sex, school, birth) VALUES('','$field1-name','$field2-name',
'$field3-name','$field4-name','$field5-name','$field6-name')";mysql_query($query);mysql_close();?>
让我们一步一步地看一遍。首先,这是您当前的代码,经过整理以便于阅读:
<?php
$username = "root";
$password = "changedpassword";
$database = "User";
$field1_name = $_POST['name'];
$field2_name = $_POST['password'];
$field3_name = $_POST['email'];
$field4_name = $_POST['sex'];
$field5_name = $_POST['school'];
$field6_name = $_POST['birth'];
mysql_connect(localhost, $username, $password);
@mysql_select_db($database) or die("Unable to select database");
$query = "
INSERT INTO
create_user
(
name,
password,
email,
sex,
school,
birth
)
VALUES
(
'',
'$field1_name',
'$field2_name',
'$field3_name',
'$field4_name',
'$field5_name',
'$field6_name'
)
";
mysql_query($query);
mysql_close();
?>
现在我们有了一些实际可行的方法。它非常不安全,存在大量SQL注入攻击的可能性,而且在最新的PHP上也不起作用,因为mysql\uu
函数已被删除,但它实际上可能在某些地方起作用。您可能不想将其投入生产,但出于测试目的,我们已经取得了一些进展。MySQL自PHP5.6以来就被弃用,而且不安全,请改用PDO或MySQLi
连接MySQLi
<?php
//MySQLi information
$db_host = "localhost";
$db_username = "username";
$db_password = "password";
//connect to mysqli database (Host/Username/Password)
$connection = mysqli_connect($db_host, $db_username, $db_password) or die("Error " . mysqli_error());
//select MySQLi dabatase table
$db = mysqli_select_db($connection, "table") or die("Error " . mysqli_error());
$field1_name = $_POST['name'];
$field2_name = $_POST['password'];
$field3_name = $_POST['email'];
$field4_name = $_POST['sex'];
$field5_name = $_POST['school'];
$field6_name = $_POST['birth'];
$query = mysqli_query($connection, "INSERT INTO create_user
(name, password, email, sex, school, birth ) VALUES
(
'$field1_name',
'$field2_name',
'$field3_name',
'$field4_name',
'$field5_name',
'$field6_name'
)
");
您是否有任何错误?。它们不再得到维护。看到了吗?相反,请了解,并使用or-可以帮助您决定使用哪一种。应该进行一些合理的代码格式化和变量命名-这也将帮助您调试代码。PHP变量名称中不能有连字符打开错误报告-PHP将尝试在这里帮助您,但您没有听到这里仍然存在SQL注入问题。而$\u POST
变量可能未定义。我想改进我自己的答案,但我没时间了。也许明天。@TRiG是的,当然,仍然有可能受到SQL注入攻击,但不像使用MySQL那样。从未说过它是100%安全的。更安全的是使用预先准备好的语句,但向他展示了这种方法,这样他就可以在自己的级别上理解它,为什么$u POST可以不定义?因为日期/性别应该与复选框和选择选项一起使用?我只是修复了他发布的内容,而不是从头开始写。那你为什么把它当成是一个发布什么的竞争对手?@TRiG我没有挑战你,你可以发布或改进任何你喜欢的东西。你的评论让我觉得你只是想把你的答案贴出来,而不是别的。对不起。不是想让它成为一个挑战或者听起来像是一次攻击。只是说我们的两个答案都需要一些注意事项。@TRiG如果这是你的意思,那么我们是好的,是的,在这种情况下你是对的;)好的,谢谢。当我从其他地方提取这段代码时,我没有意识到我使用了错误的格式。我想继续向您展示如何解决这些问题,但我太累了,想不清楚。也许明天吧。我试着运行你上面粘贴的内容,删除了额外的值,但即使这样,一旦我加载localhost并在站点的登录页面中输入信息,mysql数据库也不会更新以反映新插入的信息
<?php
//MySQLi information
$db_host = "localhost";
$db_username = "username";
$db_password = "password";
//connect to mysqli database (Host/Username/Password)
$connection = mysqli_connect($db_host, $db_username, $db_password) or die("Error " . mysqli_error());
//select MySQLi dabatase table
$db = mysqli_select_db($connection, "table") or die("Error " . mysqli_error());
$field1_name = $_POST['name'];
$field2_name = $_POST['password'];
$field3_name = $_POST['email'];
$field4_name = $_POST['sex'];
$field5_name = $_POST['school'];
$field6_name = $_POST['birth'];
$query = mysqli_query($connection, "INSERT INTO create_user
(name, password, email, sex, school, birth ) VALUES
(
'$field1_name',
'$field2_name',
'$field3_name',
'$field4_name',
'$field5_name',
'$field6_name'
)
");