2014-05-01 60 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