试图让PHP和数据库一起工作

时间:2012-12-28 21:25:38

标签: php mysql

我正在尝试自学如何使用php和mysql。为了练习,我创建了一个简单的测试网站,它使用了用户名和密码,以及一个使用phpmyadmin和mysql的数据库。我能够创建与我的数据库的成功连接,但现在我正在尝试从我的网站上的表单中获取数据并将其插入名为“account”的表中。帐户有三个字段:'用户名','密码'和'用户ID'(主键)。用户ID应该自动递增,因此该字段不需要输入数据。我编写的代码我认为会收集用户名和密码,并将其添加为帐户表中的新记录,但是收到错误消息:

  

内部服务器错误

     

服务器遇到内部错误或配置错误   无法完成您的请求。

     

此外,尝试时遇到404 Not Found错误   使用ErrorDocument来处理请求。

下面我已经包含了我的代码。我以前从未使用过PHP或者之前使用过数据库,所以我可能犯了很明显的错误。

php_script

 <?PHP

    $db_host = "stevie.heliohost.org";
    $db_username = "secret";
    $db_pass = "secret";
    $db_name = "secret";

    $connection = @mysql_connect ("$db_host","$db_username", "$db_pass") 
    or die ("could not connect to mySQL");


    @mysql_select_db("$db_name") or die ("No database");

    $sql="INSERT INTO account(username, password)
    VALUES('$_POST[user]','$_POST[password]')";
    if (!mysql_query($sql,$connection ))
      {die('Error: ' . mysql_error());}
    echo "1 record added";

    mysql_close($con);

?>

HTML表格

 <form name="LOGIN" action="php_script.php" method="post">

     Username: <input id="username" type="text" name="user">   
     password: <input  id="password" type="text" name="password">
        <input id="submit" type="submit" value="Submit">

  </form>

3 个答案:

答案 0 :(得分:3)

试试这个

$db_host = 'stevie.heliohost.org';
$db_username = "secret";
$db_pass = "secret";
$db_name = "secret";

$connection = mysql_connect($db_host,$db_username, $db_pass) 
or die ("could not connect to mySQL");


mysql_select_db($db_name) or die ("No database");

$sql="INSERT INTO account(username, password)
VALUES('".$_POST[user]."','".$_POST[password]."')";
if (!mysql_query($sql,$connection ))
  {die('Error: ' . mysql_error());}
echo "1 record added";

mysql_close($con);

OBS:你应该使用mysqli或PDO,你的代码很容易进行sql注入

答案 1 :(得分:1)

如果您自学PHP,首先应该学习PDO。因为,你使用mysql的方式,你是打开你的网站的SQL-Injection类型的黑客,任何人都可以做。由于您直接在数据库中提交$_POST[''];的值。今天开始学习PDO,它更加安全。你可以在这里找到一个好的教程:http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers

此外,请检查此代码,因为我已对其进行了一些修改。和主机名,几乎总是localhost

 <?PHP

    $db_host = "localhost";
    $db_username = "secret";
    $db_pass = "secret";
    $db_name = "secret";

    $connection = mysql_connect ("$db_host","$db_username", "$db_pass") 
    or die ("could not connect to mySQL");


    mysql_select_db("$db_name") or die ("No database");

    $sql="INSERT INTO account(username, password)
    VALUES('$_POST[user]','$_POST[password]')";
    if (!mysql_query($sql,$connection ))
      {die('Error: ' . mysql_error());}
    echo "1 record added";

    mysql_close($con);

?>

答案 2 :(得分:1)

首先,您不应该使用mysql_函数,因为它们已被弃用。尝试使用PDO或喜欢。

第二次尝试这个

 $db_host = 'stevie.heliohost.org';
 $db_username = "secret";
 $db_pass = "secret";
 $db_name = "secret";

 $connection = mysql_connect($db_host,$db_username, $db_pass) 
  or die ("could not connect to mySQL");


 mysql_select_db($db_name) or die ("No database");

$sql="INSERT INTO account(username, password)
  VALUES('".mysql_escape_string($_POST[user])."','".mysql_escape_string($_POST[password])."')";
if (!mysql_query($sql,$connection ))
   {die('Error: ' . mysql_error());}
 echo "1 record added";

 mysql_close($con);

你应该在你的查询中转义你的值,所以它不能用于SQL注入

我不应该使用mysql_escape_string,你应该使用至少mysqli

通过一个很好的教程来了解更多信息