2014-05-01 70 views
-3

// Laravel代码 这是我的PHP代码,我没有得到什么是错误在哪里,请任何一个帮助我PHP数组字符串转换错误上查询级联

static function getall($input) { 
    $sql = "SELECT * FROM radio_city"; 
    $where = []; 
    $params = []; 
    if ($input['city']) { 
     $where[] = "city = ?"; 
     $params[] = $input['city']; 
    } else { 
     $where = ''; 
    } 
    $sql .= $where; 
    $sql .= "\nGROUP BY city"; 
    //echo $sql; 
    return DB::select($sql, $params);  
} 
+0

哇,格式化您的代码。看起来你正试图用字符串连接数组,正如错误所述。检查你的变种的类型。 – Utkanos

+0

这是一个非常基本的错误,您的代码似乎尝试两次做同样的事情,但时间都不正确。解释你想做什么,因为简单地将一个数组添加到字符串的末尾将不起作用。 – Jessica

+0

我是新来的PHP,所以任何人都可以修改代码,以便我能够理解什么和如何 – Prasanna

回答

1

$input$where都是数组,您试图强制字符串连接。

有问题的线条

$sql = "SELECT * FROM radio_city WHERE city=".$input."";

$sql .= $where;

我不知道你想做什么,但在我看来,你应该删除存根SQL查询中的“WHERE”之后的所有内容。

此外,您必须对$where的数据类型作出决定,在任何情况下,您都不需要将$where设置为空字符串的else块。因此,将$where初始化为空字符串,并将每个条件与AND/OR连接起来,或者初始化为一个数组,并推入AND或OR条件,然后在连接到您的存根之前崩溃。

编辑:只是在黑暗中拍摄你正在寻找...

static function getall($input) { 
    $where = []; 
    $params = []; 
    $sql = 'SELECT * FROM radio_city'; 

    if (isset($input['city']) && $input['city']) { 
     $where[] = ' city = ?'; // Subsequent additions to $where should specify AND/OR conditional 
     $params[] = $input['city']; 
    } 

    $sql .= implode(',', $where); 
    $sql .= " GROUP BY city"; 

    return DB::select($sql, $params);  
} 

未经检验。不要仅仅复制&粘贴。如果它有效,那么很好,但看看发生了什么变化,并试着真正理解它为什么会改变,或者如果你不知道,可以在这里问。

+1

谢谢你的帮助,我知道了。真的很高兴这个答案,非常感谢你 – Prasanna

+0

不客气:)祝你好运! –

1

此:

$sql = "SELECT * FROM radio_city WHERE city=".$input.""; 

矛盾的:

if ($input['city']) { .... 

什么是$输入?它是一个数组吗?它是一个字符串吗?如果它是一个数组,因为我怀疑和第二行显示,误差将与第一,你可能想:

$sql = "SELECT * FROM radio_city WHERE city=" . $input['city']; 

...虽然第二行建议您不能确定是否$ input ['city']存在。顺便说一下,最好使用空()有:

if (! empty($input['city'])) { .... 

当你正在做的事情是试图评估出现什么你打算做一个字符串作为一个布尔值。

由于Utkanos评论,但是,哇!格式化代码,更全面地考虑逻辑。没有太多的问题值得担心$ input ['city']是否存在于将它串接到一个字符串上之后...

+0

谢谢你是错误的,但我有修改代码,你可以检查一次,请给出解决方案 – Prasanna

+1

卡洛斯告诉过你。但是,实际上,阅读代码,运行一些测试,使用var_dump() - 如果你不自己调试这些东西,你将永远不会前进。 – Alex

+0

谢谢你的帮助.. – Prasanna