我如何修复我的mysqli / php错误

时间:2013-12-06 20:38:06

标签: php mysql mysqli

我有这个PHP脚本

    <?php
 $DB_HOST= "localhost";
 $DB_NAME = "hhh";
 $DB_USER = "root";
 $DB_PASSWORD= "";

     $con= mysqli_connect($DB_HOST,$DB_USER,$DB_PASSWORD,$DB_NAME) or die("Failed to connect to MySQL");                  
       function SignIn()
        {
        session_start();   
          if(!empty($_POST['user'])){
          $query = mysqli_query($con,"SELECT *  FROM websiteusers WHERE userName = '$_POST[user]' AND pass = '$_POST[pass]'") or die(mysqli_error($con)); //changed
          $row = mysqli_fetch_array($query) or die(mysqli_error($con));
          if(!empty($row['userName']) && !empty($row['pass'])) //changed to a more modern operator
            {
             $_SESSION['userName'] = $row['pass'];
             echo "SUCCESSFULLY LOGIN TO USER PROFILE PAGE...";

             }
          else
            {
               echo "SORRY... YOU ENTERD WRONG ID AND PASSWORD... PLEASE RETRY...";
             }
          }
       }
      if(isset($_POST['submit']))
      {
        SignIn();
        }

    ?>

但它一直给我这个错误

注意:未定义的变量:第12行的C:\ xampp \ htdocs \ test2 \ Sign-in \ connectivity.php中的con

警告: mysqli_query()要求参数1为mysqli,在第12行的C:\ xampp \ htdocs \ test2 \ Sign-in \ connectivity.php中给出null

注意:未定义的变量:第12行的C:\ xampp \ htdocs \ test2 \ Sign-in \ connectivity.php中的con

警告: mysqli_error()期望参数1为mysqli,在第12行的C:\ xampp \ htdocs \ test2 \ Sign-in \ connectivity.php中给出null“

帮助将受到重视

2 个答案:

答案 0 :(得分:1)

您需要将$con传递给函数,或将其声明为全局变量,因为它在当前范围内无法查看。

要将其作为参数传递,请执行以下操作:

SignIn($con);

接收

function SignIn($con)

答案 1 :(得分:1)

请不要将其声明为全球性的。这是一个坏主意。你需要将它作为参数传递。你在函数中看不到$con的原因是函数有自己的范围。所以你可以声明$con是其中的东西。将其作为参数传递,不会引起您引用的问题

$con= mysqli_connect($DB_HOST,$DB_USER,$DB_PASSWORD,$DB_NAME) or die("Failed to connect to MySQL");                  
   function SignIn($con)
    {
    session_start();   
      if(!empty($_POST['user'])){
      $query = mysqli_query($con,"SELECT *  FROM websiteusers WHERE userName = '$_POST[user]' AND pass = '$_POST[pass]'") or die(mysqli_error($con)); //changed
      $row = mysqli_fetch_array($query) or die(mysqli_error($con));
      if(!empty($row['userName']) && !empty($row['pass'])) //changed to a more modern operator
        {
         $_SESSION['userName'] = $row['pass'];
         echo "SUCCESSFULLY LOGIN TO USER PROFILE PAGE...";

         }
      else
        {
           echo "SORRY... YOU ENTERD WRONG ID AND PASSWORD... PLEASE RETRY...";
         }
      }
   }
  if(isset($_POST['submit']))
  {
    SignIn($con);
    }