【发布时间】:2013-06-22 21:30:51
【问题描述】:
我没有看到问题。我的所有数据都不会插入注册数据库。请检查 INSERT INTO 部分。我是编码的初学者,所以我不太了解这些东西。请帮帮我。
<?php
**my info is here**
//Connect to database
mysql_connect ($dbhost, $dbuser, $dbpass)or die("Could not connect: ".mysql_error());
mysql_select_db($dbname) or die(mysql_error());
?>
<?php
if(isset($_POST['submit'])){
$username = $_POST[user];
$password = $_POST[pass];
// lets check to see if the username already exists
$checkuser = mysql_query("SELECT username FROM register WHERE username='$username'");
$username_exist = mysql_num_rows($checkuser);
if($username_exist > 0){
echo "I'm sorry but the username you specified has already been taken.Please pick another one.";
unset($username);
exit();
}
// lf no errors present with the username
// use a query to insert the data into the database.
$query = ("INSERT INTO register (username, password)
VALUES ('$username', '$password')");
mysql_query($query) or die(mysql_error());
mysql_close($query);
}
?>
【问题讨论】:
-
你遇到了什么错误?
-
您将原始密码存储在数据库中,而不是转义您的输入或使用参数化查询。这已经不是一个好的开始。你应该先改用 PDO 来解决这个问题!
-
你真的不应该使用任何
mysql_*函数,而是使用 MySQLi 或 PDO。 -
一方面,
$username = $_POST[user];应该是$username = $_POST['user'];和$password = $_POST[pass];应该是$password = $_POST['pass'];。你省略了撇号。可能只是“为什么”。改变这些,看看有什么好处。 -
解释一下,如果 php 不理解它们,它会将任何裸词转换为字符串。这是一个可怕的“功能”,但它就在那里。不只是在 php 中,我相信 perl 曾经这样做过,也许现在仍然如此。 (编辑:哎呀 minitech 打败了我)