2017-05-07 18 views
0

以下のPHPコードを使用して、データベースからレコードを選択しようとしています。私は、コードを実行すると、私はこのエラーを取得:mysqli_resultクラスのオブジェクトをjsonオブジェクトに変換する方法

Catchable fatal error: Object of class mysqli_result could not be converted to string

私が達成したいどのようなJSONオブジェクトに結果を変換することですが、代わりに私はこのエラーを取得します。

<?php 
session_start(); 
include_once 'db/dbconnect.php'; 


$var = $_GET['name']; 

// echo $var; 

$json = []; 

$sql = "SELECT * from recipes WHERE recipes.recipeName = '.$var'"; 
$rslt = mysqli_query($con,$sql); 

echo $rslt; 


?> 
+0

あなたのコードは[** SQLインジェクション**](https://en.wikipedia.org/wiki/SQL_injection)攻撃に対して脆弱です。 [** mysqli **](https://secure.php.net/manual/en/mysqli.prepare.php)または[** PDO **](https://secure.php.net/)を使用してください。 manual/en/pdo.prepared-statements.php)は、[** this post **](https://stackoverflow.com/questions/60174/how-can-i-prevent-sql - インジェクション - イン - php)。 –

答えて

1

mysqliのは、一度に1行を返しますので、あなたは、結果を反復処理する必要があります。

$sql = "SELECT * from recipes WHERE recipes.recipeName = '$var'"; 
$rslt = mysqli_query($con,$sql); 
while($row = mysqli_fetch_assoc($rslt)){ 
    print_r($row); 
} 

か、それをJSONに:

$json = array(); 
while($row = mysqli_fetch_assoc($rslt)){ 
    $json[] = $row; 
} 
echo json_encode($json); 

mysqli_fetch_assocはと行を返しますキー配列 - http://php.net/manual/en/mysqli-result.fetch-assoc.php

SQLインジェクションディフェンスに関しては、mysqli_real_escape_stringhttp://php.net/manual/en/mysqli.real-escape-string.php)のような:

$var = mysqli_real_escape_string($con,$_GET['name']); 
関連する問題