PHP插入查询不起作用

时间:2013-05-09 10:31:28

标签: php mysql pdo database-connection

<html>
   <body>
   <?php
    $host = 'localhost';
    $user = 'users';
    $pw = '';
    $db = '#######';
    $connect = mysql_connect($host,$user,$pw)
               or die ("Could not connect.");

    mysql_select_db($db);

    $sql = mysql_query("INSERT INTO users VALUES ('','l','l','l','l','l','l')");
    if(mysql_query($sql)){
       print "Item added successfully.<br/>";
    }
    else{
       print "Item addition failed.<br/>";
    }
 ?>
</body>
</html>

我试图将这些值插入到我的数据库中users但是当我运行代码时它继续说“项目添加失败”但我不确定为什么,数据库没有问题连接,因为我已经测试过,我不确定我的插入查询有什么问题?

4 个答案:

答案 0 :(得分:3)

您的代码中存在一些问题。首先,你做两次查询。其次,你确定你的数据库名称是$ db ='#######';将其更改为正确的名称。

要检查查询是否正常以及是否添加了行,请使用 mysql_affected_rows()检查错误,使用 mysql_error()

同时将您的sql引擎更改为 PDO mysqli 哪个更好。

请注意,Mysql_ *函数已被删除。这就是为什么我给你举例说明如何在PDO中使用数据库连接。

<?php
   $host = 'localhost';
   $user = 'users';
   $pw = '';
   $db = '#######'; //CHANGE IT TO PROPER NAME WHERE TABLE users IS!
   $connect = mysql_connect($host,$user,$pw)
       or die ("Could not connect.");

   mysql_select_db($db);

  $sql = mysql_query( "INSERT INTO users VALUES('' ,'l','l','l','l', 'l','l')") or die(mysql_error());

  if(mysql_affected_rows()>0)
     echo "Item added successfully.<br/>";
  else
     echo "Item addition failed.<br/>"; 
?>

如果您仍然了解它会帮助您,我会给您一个适当的示例如何使用PDO原因:)

PDO示例

<?php
$dsn = 'mysql:dbname=YOUR_DB_NAME;host=localhost';
$user = 'users';
$password = '';

try {
    $dbh = new PDO($dsn, $user, $password);
    $count = $dbh->exec("INSERT INTO users VALUES('' ,'l','l','l','l', 'l','l');");
    echo $cout ? "Item added successfully" : "Item addition failed";
} catch (PDOException $e) {
    echo 'Failed: ' . $e->getMessage();
}

?>

插入值的安全且好的方法是使用预准备语句。 要创建预准备语句,请使用

$stmt = $dbh->prepare("INSERT INTO users (name, email) VALUES(?,?)");
$stmt->execute( array('user', 'user@example.com')); 

You can learn more here

答案 1 :(得分:1)

您正在使用mysql_query两次。将您的代码更改为:

 $sql = "INSERT INTO users VALUES ('' ,'l','l','l','l', 'l','l')";

答案 2 :(得分:1)

尝试这个。你的两次调用函数mysql_query()。 第二次你传递了res​​ult_set而不是查询。

     <html>
     <body>
      <?php
       $host = 'localhost';
       $user = 'users';
       $pw = '';
       $db = '#######';
       $connect = mysql_connect($host,$user,$pw)
           or die ("Could not connect.");


       mysql_select_db($db);

      $sql = mysql_query( "INSERT INTO users 
       VALUES('' ,'l','l','l','l', 'l','l')");

     if($sql){
        print "Item added successfully.<br/>";
      }
     else { print "Item addition failed.<br/>"; }
    ?>
    </body>
     </html>

答案 3 :(得分:1)

这应该可以帮助你调试,你应该调查PDO而不是......当然记得使用正确的凭据,我认为你已经删除它们以确保安全:-)     

mysql_select_db($db);

$sql = mysql_query("INSERT INTO users VALUES ('','l','l','l','l','l','l')", $connect) OR die(mysql_error());
if($sql)
{
   print "Item added successfully.<br/>";
}
else{
   print "Item addition failed.<br/>";
}
?>