与 mysql 的连接未关闭($conn->close 似乎不起作用)

Connection to mysql is not closing ($conn->close doesn't seem to work)

我有一个表格:

<form action="createPoll.php" method="POST">
<!-contents->
<input type="submit" value="Submit">    
</form>

单击提交按钮后,它会运行 createPoll.php,其中包含:

<?php
ini_set('session.gc_maxlifetime', 3600);
session_set_cookie_params(3600);
session_start();

//contents

$conn = new mysqli ($host, $dbusername, $dbpassword, $dbname);
    if(mysqli_connect_error()){
    die("Connection Error (" .mysql_connect_errno(). ") " . mysql_connect_error());
    header('Location: user.php'); 
    }
    else{
        $sql="select count(poll_id) from poll_info where poll_id=$poll_id;";

        while(mysqli_query($conn,"SELECT count(poll_id) from table where poll_id=$poll_id") >=1){
            $poll_id= random_int(0,1000000);
        }
        $sql= "INSERT INTO poll_info (poll_id, username, input_date_time, open_time, data) values('$poll_id','$username','$input_date_time','$open_time','$data')"; //defined above in contents

        if($conn->query($sql)){
            echo "<script>alert('success!')</script>";
        }
        else{
            echo"Error: ". $sql ."<br>". $conn->error;
        }
    }
$conn->close;
?>

问题是我得到这个错误:

Notice: Undefined property: mysqli::$close in C:\xampp\htdocs\createPoll.php in line 61

指的是$conn->close(); 我在其他地方有类似的代码(用于登录和注册)并且在那里工作正常(连接关闭正常)但由于某种原因我似乎在这里遇到错误。 有什么想法吗?

您没有指定 MySQLi 连接参数。您调用 new mysqli ($host, $dbusername, $dbpassword, $dbname) 但从未定义 $host$dbusername$dbpassword,$dbname。您还混合了 MySQL API(例如 mysqli_connect_error()mysql_connect_error()),其中 won't work.

此外,您真的应该考虑使用 prepared statements to prevent SQL injection

正如错误消息 says.there is no 属性 called close in mysqli object。close 是您必须调用的函数如下。

$conn->close();

你错过了函数末尾的括号()

我认为您需要将代码修改为如下内容:

<?php

    // if anybody wants to format this better go ahead... 
    //...

    $host = '';
    $dbusername = '';
    $dbpassword = ''; 
    $dbname = '';

    $mysqli = new mysqli($host, $dbusername, $dbpassword, $dbname);
    if ($mysqli->connect_errno) {
      die("Connection Error");
      header('Location: user.php');
    } else {
      $mysqli->query("SELECT count(poll_id) FROM `poll_info` WHERE `poll_id` = '$poll_id'");
      while ($conn,"SELECT count(poll_id) FROM table WHERE `poll_id` = '$poll_id'") >=1)) {
          $poll_id= random_int(0,1000000);
      }

      $sql= "INSERT INTO poll_info (poll_id, username, input_date_time, open_time, data) values('$poll_id','$username','$input_date_time','$open_time','$data')";
      if($mysqli->query($sql)){
          echo "<script>alert('success!')</script>";
      } else {
          echo"Error ...";
      }
    }
    $mysqli->close();
?>

不要像提到的黑曜石时代那样使用那些 mysql_* 函数。