未捕获的类型错误:mysqli_query() [关闭]

问题描述 投票:0回答:2

我正在尝试使 delete.php 文件正常工作,它应该删除针对 db 上传的文件。有人可以帮我解决我在这里做错的事吗?

致命错误:Uncaught TypeError: mysqli_query(): Argument #1 ($mysql) must be of type mysqli, it is on line 7.

这是代码:

<?php

include "dbconnect.php"; // Using database connection file here

$id = $_GET['id']; // get id through query string

$del = mysqli_query($db,"delete from tbl_files where id = '$id'"); // This is line 7, delete query

if($del)
{
    mysqli_close($db); // Close connection
    header("location:index.php"); // redirects to all records page
    exit;
}
else
{
    echo "Error deleting record"; // display error message if not delete
}
?>

我在 dbconnect.php 中进行了更改,但这也无济于事。

<?php
//connect mysql database
$host = "xxxxxxxxxxxx";
$user = "xxxxxxxxxxxx";
$pass = "xxxxxxxxxxxx";
$db = "xxxxxxxxxxxx";
$con = mysqli_connect($host, $user, $pass, $db) or die("Error " . mysqli_error($con));

?>
php mysql fatal-error
2个回答
-1
投票

在第 7 行尝试将 $db 替换为 $con,因为 dbconnect.php 上的 $db 是一个简单的变量和 mysqli_query() 函数,第一个参数需要一个 mysql 对象。在第一个程序示例中抢劫:

https://www.php.net/manual/en/mysqli.query.php


-1
投票
include 'dbconnect.php';

// 清理输入参数

$id = mysqli_real_escape_string($db, $_GET['id']);

mysqli_real_escape_string 从输入中删除所有特殊字符。

// 从数据库中删除记录

$sql = "DELETE FROM tbl_files WHERE id = '$id'";

if (mysqli_query($con, $sql)) {

    mysqli_close($con);

    header("Location: index.php");

    exit;

}
else
{ 
\
  echo "Error deleting record: " . mysqli_error($db);

   }
\

这应该可行,我不知道为什么,因为从根本上说它是相同的,只是格式不同。但它更安全,您还应该通过执行 getenv('variable_name'); 来研究使用环境变量。在需要变量和 putenv('variable_name=variable_value') 的脚本中;在 dbconnect 脚本中,您只需配置凭据并在主 php 脚本中连接,以便更容易修复错误。

© www.soinside.com 2019 - 2024. All rights reserved.