Đây là mã của tôi:PHP/MySQLi - Fatal error: Call to một hàm thành viên mysqli_query() trên một tổ chức phi vật thể
require "../include/functions.php";
error_reporting(E_ALL);
ini_set('display_errors', '1');
ConnectWithMySQLiDatabase();
$Cat = addslashes($_POST["Category"]);
$v = $conn->mysqli_query($conn,"SELECT * FROM `categories` WHERE `id`=$Cat");
$vrowi = mysqli_fetch_array($v, MYSQLI_ASSOC);
$url = $conn->real_escape_string($vrowi['Link']);
Dưới đây là những gì tôi có trong functions.php
:
function ConnectWithMySQLiDatabase() {
global $dbhost, $dbuser, $dbpass, $database, $HTTP_SERVER_VARS;
$conn = new mysqli($dbhost, $dbuser, $dbpass, $database);
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$conn->set_charset("utf8");
global $conn;
}
Các biến số $dbhost, $dbuser, $dbpass, $database,
được đặt chính xác.
Khi tôi cố gắng để thực hiện mysqli_query này tôi nhận được lỗi sau:
<b>Fatal error</b>: Call to a member function mysqli_query() on a non-object in <b>/fetch_category_products.php</b> on line <b>19</b><br />
Dòng 19 là:
$v = $conn->mysqli_query($conn,"SELECT * FROM `categories` WHERE `id`=$Cat");
bạn có thể vui lòng cho tôi biết đâu là sai lầm của tôi và làm thế nào tôi có thể sửa chữa nó ?
Cảm ơn trước!
** Danger **: Bạn đang * * dễ bị tấn công [tấn công SQL injection] (http://bobby-tables.com/) ** mà bạn cần [bảo vệ] (http://stackoverflow.com/questions/60174/best-way-to-prevent- sql-injection-in-php) của bạn từ. ('addslashes' không an toàn cho điều này, ngay cả tài liệu cho' addslashes' nói như vậy) – Quentin
Với những gì tôi phải thay thế nó? 'mysqli_real_escape_string'? –
@TonyStark Vui lòng xem xét sử dụng PDO cho công việc cơ sở dữ liệu của bạn. – TwoStraws