2017-08-27 187 views
-1

我有一個簡單的數據檢索來自Mysql的PHP文件,並以JSON字符串編碼。下面的代碼返回預期函數在PHP中不返回結果

<?php 
require 'dbconnection.php'; 


$tablename = $_GET["tabname"]; 

$sql = "SELECT * FROM ". $tablename ; 

if (!mysqli_query($conn,$sql)) 
{ 
    echo("Error description: " . mysqli_error($con)); 
} else { 
    $res = mysqli_query($conn,$sql); 
} 

$result = array(); 


while($row = mysqli_fetch_array($res)){ 
array_push($result, 
array('_id'=>$row[0], 
     'course_name'=>$row[1], 
     'address'=>$row[2], 
     'city'=>$row[3], 
     'state'=>$row[4], 
     'zipcode'=>$row[5], 
     'phone'=>$row[6])); 
} 


echo json_encode(array("result"=>$result)); 
$conn->close(); 

?>

樣品結果...

結果
{"result":[{"_id":"1","course_name":"Quail Valley","address":"12565 NW Aerts Rd.","city":"Banks","state":"OR","zipcode":"97106","phone":"5033244444"},...]} 

我的目標是使用傳遞給PHP和基於它的名字變量呼叫功能。我似乎無法弄清楚我做錯了什麼!

<?php 
require 'dbconnection.php'; 


$tablename = $_GET["tabname"]; 

function Course() { 
    $sql = "SELECT * FROM ". $tablename ; 

    if (!mysqli_query($conn,$sql)) 
    { 
     echo("Error description: " . mysqli_error($conn)); 
    } else { 
    $res = mysqli_query($conn,$sql); 
    } 

    $results = array(); 

    while($row = mysqli_fetch_array($res)){ 
    array_push($results, 
     array('_id'=>$row[0], 
      'course_name'=>$row[1], 
      'address'=>$row[2], 
      'city'=>$row[3], 
      'state'=>$row[4], 
      'zipcode'=>$row[5], 
      'phone'=>$row[6])); 
    } 
     return $results; 
} 

$result = call_user_func(Course()); 
// OR... $result = call_user_func($tablename()); 
echo json_encode(array("result"=>$result)); 
$conn->close(); 

?>

這裏是輸出...

Error description: {"result":null} 

回答

0

首選方法是直接去的: -

$result = Course(); 

,如果你想使用call_user_func()然後像下面使用: -

$result = call_user_func('Course'); 

這是因爲它將一個回調作爲一個字符串: - call_user_func

+0

這工作...幾個修正添加'全球$ conn;全球$表名;'功能。修改調用函數,如此處所述'$ result = $ tablename();' – archiver

+0

@archiver很高興幫助你:) :) –