与 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_* 函数。
我有一个表格:
<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_* 函数。