我想在我的mysql數據庫中選擇一個包含以逗號分隔的值的字段(讓我們說它是「dd,bb,ee」),以便這些可以被分解並轉換爲數組。 然而,如果試圖做到這一點:如何使用PDO輸出字符串而不是單元素數組來執行執行?
$sql = $conn->prepare("SELECT contacts FROM Users WHERE username = ?");
$sql->execute($usernametmp);
$oldcontacts = $sql->fetch(PDO::FETCH_COLUMN);
我得到這個錯誤:
Warning: PDOStatement::execute() expects parameter 1 to be array, string
given in /.../.../.../.../.../....php
在執行行,而如果我做到以下幾點:
$sql = $conn->prepare("SELECT contacts FROM Users WHERE username = ?");
$sql->execute(array($usernametmp));
$oldcontacts = $sql->fetch(PDO::FETCH_COLUMN);
它的工作原理,但與數據庫條目出來作爲一個數組元素包含「dd,bb,ee」,其中它將需要一個字符串,以便我使用爆炸與逗號作爲分隔符。
任何想法如何解決這個問題?
你需要每個值的佔位符。 CSV列不是很好的DB設計。 '$ usernametmp'是一個數組還是字符串? – chris85
你可以使用'bindValue'來分配'$ usernametmp',但你會得到和上一個例子一樣的傳入一個元素數組的結果。 'FETCH_COLUMN'應該返回第一行第一列的值,而不是數組。這兩者沒有關係。傳入單個元素數組不會使您的'FETCH_COLUMN'輸出包裝在數組中。如果你在分配它後立即執行了'var_dump($ oldcontacts);',它應該只是第一行和聯繫人列的值。 –
@ chris85 $ usernametmp只是一個字符串,我從 $ usernametmp = $ _GET [「usernametmp」]; 一個問號是需要的一個佔位符。 –