Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我的SQL查询在PHPMyAdmin中工作,但在我的PHP代码中不工作,有人能告诉我为什么吗?_Php_Mysql_Phpmyadmin - Fatal编程技术网

我的SQL查询在PHPMyAdmin中工作,但在我的PHP代码中不工作,有人能告诉我为什么吗?

我的SQL查询在PHPMyAdmin中工作,但在我的PHP代码中不工作,有人能告诉我为什么吗?,php,mysql,phpmyadmin,Php,Mysql,Phpmyadmin,我有两个PHP文件在互相交谈。一个调用另一个中的函数来访问数据库并获取数据 以下是调用另一个函数的函数: $app->post('/responsiveCalender', function() use ($app) { verifyRequiredParams(array('restaurant_id')); $restaurant_id = $app->request()->post('restaurant_id'); $db = new DbH

我有两个PHP文件在互相交谈。一个调用另一个中的函数来访问数据库并获取数据

以下是调用另一个函数的函数:

$app->post('/responsiveCalender', function() use ($app) {

verifyRequiredParams(array('restaurant_id'));

$restaurant_id      = $app->request()->post('restaurant_id'); 

$db      = new DbHandler();
$response = array();

$dish_details = $db->getRestaurantDishDetails($restaurant_id);  

if($dish_details != null)
{
    foreach($dish_details as $key)
    {
        $available_dates = $db->getAvailableDates($dish_details);
    }
    $response = $available_dates;
}
else {
    $response['error'] = true;
    $response['code'] = 102;
}

echoRespnse(200, $response);
});
如果
$dish\u details=null
,此代码将返回
error='true'
code='102'

这是正在调用的方法:

public function getRestaurantDishDetails($restaurant_id)
{
        /* $result = mysqli_query($this->conn, "SELECT 'dish_id' FROM       restaurant_dish WHERE restaurant_id = '$restaurant_id'") or die(mysqli_error($this->conn)); */

    $stmt = $this->conn->prepare("SELECT 'avail_by_date' FROM `restaurant_dish` WHERE 'restaurant_id' = ? ");
    $stmt->bind_param("i", $restaurant_id);
    $stmt->execute();
    $stmt->bind_result($result);
    $stmt->fetch();
    $stmt->close();
    return $result;
}
我在REST客户机中传递
$restaurant\u id=22
,这在PHPMyAdmin代码中提供了
avail\u by\u date
。但是它在我的REST客户机中返回了一个
error='true'

有人能告诉我为什么这段代码返回一个空数组,而SQL语句不应该是空的吗

编辑:添加了一个
$result=array()首先是所有代码

EDIT2:当前查询是:
从“餐厅”中选择“按日期使用”,其中“餐厅id”`=22


不用担心,它只是一对``。

尝试将$stmt->bind_参数(“i”,$restaurant_id)包装在IF结构中,以确保绑定工作正常。您可能需要获取所有方法的布尔值,以缩小可能发生的情况。@RyanNerd让我试一试。@RyanNerd您能给我一个片段吗?我有点困惑该怎么办。见下面我的答案。我认为bind_result()以及fetch()和close()如果有效,则返回true。如果函数失败,$stmt->error应该有错误详细信息。它不会回显任何内容。它仍然向我显示一个error='true'。我已经对代码进行了重新工具化,以便在出现错误时,它现在返回一个包含字符串的数组。在调用函数的代码中,应检查数组是否包含字符串或日期类型。添加了此代码<代码>$temp=array();$temp=gettype($dish\u详细信息);EchoResponse($temp)正在编译代码。编辑:返回一个空数组。gettype给出了一个空结果。您可以在被调用的方法中尝试的另一件事是,不要像我建议的那样返回数组($stmt->error),而是抛出一个错误:throw new\Exception(“数据库错误:$stmt->errno-$stmt->error”);我不需要在某个地方抓住那个例外吗?
<?php

if ($stmt->bind_param("i", $restaurant_id) === false)
   {
     return array($stmt->error);
   }
if ($stmt->execute() === false)
   {
    return array($stmt->error);
   }