MySQL查询在php中无声地失败

时间:2014-04-03 15:17:54

标签: php mysql web

这是我为网站编写的PHP代码。当我执行此操作时,查询不会执行,也不会显示任何错误。我还检查了要插入的值的数据类型。 数据库用户名和密码以及所有凭据都是正确的。可能是什么问题呢?

   <?php 
    $password ='abcdef';



      $host="localhost"; // Host name 
      $username="futureti_dsatya"; // Mysql username 
      $password="D2e3e4v1i"; // Mysql password 
      $db_name="futureti_db"; // Database name 
      $tbl_name="users"; // Table name 

     // Connect to server and select databse.
     $con = mysqli_connect($host, $username, $password,$db_name); 
     if(!$con)
     {
      die('Could not connect: '. mysql_error());
     }

    else
    {
     $res = mysqli_query($con,"insert into users values(55555623,'saran1','satya_saran',$password)");


    if($res){
       print("i am ok");
    }
    else{
    print("bad");
    }
    }

    ?>

2 个答案:

答案 0 :(得分:0)

你没有得到任何错误,因为你正在使用mysql。不是mysqli。

你的代码只是包装密码。我猜连接没有连接。

替换这个:

    die('Could not connect: '. mysql_error());

    die('Could not connect: '. mysqli_error());  //to see the error

答案 1 :(得分:0)

$pass包裹在引号(55555623,'saran1','satya_saran','$pass')中,如下所示,并附上有关&#34; $password&#34;的说明,并将mysql_error());更改为mysqli_error());这两个功能并不混合,这就是为什么你没有收到正确的错误信息出现的原因。

如前所述,您使用$password两次;将其中一个变量改为其他变量。

您目前正在做的是覆盖$password变量。

我假设你想在你的数据库中输入abcdef。如果是这样,那就改为:

<?php 
   $pass ='abcdef';
   $host = "localhost"; // Host name 
   $username = "futureti_dsatya"; // Mysql username 
   $password = "D2e3e4v1i"; // Mysql password 
   $db_name = "futureti_db"; // Database name 
   $tbl_name = "users"; // Table name 

   // Connect to server and select databse.
   $con = mysqli_connect($host, $username, $password,$db_name); 

  if ( !$con ) {
       die('Could not connect: '. mysqli_error());

  } else {

      $res = mysqli_query($con, "insert into users values (55555623,'saran1','satya_saran','$pass' )");
      if( $res ) {
         print("i am ok");
      } else {
         print("bad");
      }
  }
?>

此外,将数据插入表中而不告诉它使用哪些列不是推荐的方法。

使用某些效果:

($con, "insert into users (column1, column2, column3, column4) values (55555623,'saran1','satya_saran','$pass' )

旁注:如果您的第一个值的列不是(int),那么您还需要将其包装在引号中。

另外,如果您的第一列是AUTO_INCREMENT,则需要从列的类型中删除AUTO_INCREMENT