2014-03-05 76 views
1

我想創建一個json輸出,但是在將一些舊代碼轉換爲mysqli時出現了一些錯誤。使用php創建Json輸出頁面

下面是完整的代碼:

<?php 

$con=mysqli_connect("localhost","root","pass","db"); 

if (mysqli_connect_errno()) 
{ 
echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 

$sql = mysqli_query($con,"SELECT * FROM users"); 


$response = array(); 

$users = array(); 

$result=mysqli_query($con, $sql); //ERROR 1 points here 

while($row=mysqli_fetch_array($result)) //ERROR 2 points here 
{ 
$firstname=$row['first_name']; 
$lastname=$row['last_name']; 

$users[] = array('firstname'=> $firstname, 'lastname'=> $lastname); 

} 

$response['users'] = $users; 

$fp = fopen('results.json', 'w'); 
fwrite($fp, json_encode($response)); 
fclose($fp); 


?> 

我得到2個錯誤:...查看代碼中的註釋上述

  1. 警告:mysqli_query()預計參數2爲字符串,對象在...

  2. 警告:mysqli_fetch_array()期望參數1是mysqli_result,null給出在...

回答

1

第一個錯誤是因爲你已經查詢數據庫,在這裏

$sql = mysqli_query($con,"SELECT * FROM users"); 

所以刪除此行

$result=mysqli_query($con, $sql); //remove this line 

並使用$sql對象來獲取數據,以避免第二個錯誤

while($row=mysqli_fetch_array($sql)) 
          //^Change here from $result to $sql 
0

您正在給mysqli_query一個o而不是字符串bject:

$sql = mysqli_query($con,"SELECT * FROM users"); 

$result=mysqli_query($con, $sql); //ERROR 1 points here 

從PHP documentation

Returns FALSE on failure. For successful SELECT, SHOW, DESCRIBE or EXPLAIN queries 
mysqli_query() will return a mysqli_result object. For other successful queries 
mysqli_query() will return TRUE. 

第二個錯誤是第一次的結果,你應該給$ sql中的mysqli_fetch_array功能。

+0

Op實際上使用'mysqli'而不是'mysql' – Fabio

+0

對,我拼錯'mysqli_fetch_array'函數。 –