2015-12-20 2 views
5

に私のコードです:ここではPHP/MySQLiを - 致命的なエラー:メンバ関数mysqli_queryに呼び出し()ここで非オブジェクト

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']); 

は私が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; 

} 

変数$dbhost, $dbuser, $dbpass, $database,が正しく設定されています。

私はこのmysqli_queryを実行しようとすると、私は、次のエラーが表示さ:

<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 /> 

ライン19は以下のとおりです。

$v = $conn->mysqli_query($conn,"SELECT * FROM `categories` WHERE `id`=$Cat"); 

私のミスで、どのように私はそれを修正することができますどこを教えてくださいすることができ?

ありがとうございます!データベース接続が機能していないので、

+0

**危険**:あなたがしています* * [防御](http://stackoverflow.com/questions/60174/best-way-to-prevent-)が必要な[SQLインジェクション攻撃](http://bobby-tables.com/)**に脆弱です。 sql-injection-in-php)からあなた自身を削除してください。 ( 'addslashes'は安全ではありません。' addslashes'のドキュメントでもそうです) – Quentin

+0

私は何を置き換える必要がありますか? 'mysqli_real_escape_string'? –

+0

@TonyStarkあなたのデータベース作業には、PDOの使用を検討してください。 – TwoStraws

答えて

3

というエラーが発生 - それは文字通り$connの値は、おそらくそれが設定されたり、接続が失敗したため、falseに設定されていないのいずれかを意味したオブジェクトではないことを意味しています。最後の行がglobal $conn;ではなく、return $conn;になるようにConnectWithMySQLiDatabase()を変更してください。

この機能をConnectWithMySQLiDatabase();から呼び出す方法を$conn = ConnectWithMySQLiDatabase();に変更してください。問題は解決されると思います。

OPは、この変更後にアップデートを掲示し、混乱がより明確になった:今、彼らはこのように、MySQLi接続は、彼らはただqueryを使用する必要があります:

$v = $conn->query("SELECT * FROM `categories` WHERE `id`=$Cat"); 
+0

var_dumpは私にこれを与えます:http://pastebin.com/Uf7HgUwBそして私はまだこの行で '致命的なエラー:未定義のメソッドmysqli :: mysqli_query()'を呼び出す '$ v = $ conn-> mysqli_query($ conn、" SELECT * FROM 'categories' WHERE' id' = $ Cat ");'何かアドバイス? –

+0

ありがとう!スクリーンショットはとても役に立ちました。私の更新された答えを見てください。 – TwoStraws

+0

私はこのエラーを受け取りました: '警告:mysqli :: query()は、パラメータ1が文字列であり、オブジェクトが同じ行にあることを期待しています。 –

関連する問題