2017-04-06 221 views
1

我正在PHP中開發SOAP服務。
最近我在從MySQL檢索結果時遇到了一個問題。
問題
檢索結果時,我得到的列數多於我在SQL語句中指定的列數。處理檢索到的信息時,這會影響我的代碼。例如,當我將fetch()更改爲fetchAll()時,我無法處理多個記錄。有沒有什麼辦法可以告訴PHPMySQL能夠正確返回我需要的列而不返回這個垃圾?
示例代碼PHP PDO返回空列名

$stmt2 = $pdo2->prepare("SELECT `id`, `username`, `IP_address` FROM PADR_users WHERE `username` LIKE :username"); 
$stmt2->bindParam(':username',$searchParam, PDO::PARAM_STR, 20); 
$stmt2->execute(); 
$tmp = $stmt2->fetch(PDO::FETCH_ASSOC); 
$response->return = var_export($tmp, true); 

這將產生:

$pdo2->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
$pdo2->setAttribute(PDO::ATTR_ORACLE_NULLS, PDO::NULL_NATURAL); 

但是它並不甚至絲毫讓:

object(stdClass)#4 (1) { ["return"]=> string(193) "array ('id' => '19', 'username' => 'Batman2', 'IP_address' => '192.168.0.1' . "\0" . '' . "\0" . '' . "\0" . '' . "\0" . '' . "\0" . '' . "\0" . '' . "\0" . '' . "\0" . '' . "\0" . '',)" } 

之前我打電話的MySQL我還利用這些嘗試區別。
注意
我已經離開故意fetch()而不是fetchAll()消除可能性的fetchAll()實現可能影響結果。

+0

'「%」 $ searchParam「%」'應該是這樣的 –

+0

這看起來像你的數據庫的IP地址一些不良信息。在命令行或PHPMyAdmin中對其進行驗證,並在插入之前對其進行修剪。只是分配你的結果,而不是使用var_export。 – aynber

+0

@MasivuyeCokile我已經這樣做了,同樣的無效結果。 – XAMlMAX

回答

1

您只能檢索3列。但是,IP地址在其末尾有一些空數據。您可以通過連接操作的字符串之間訴說:。

'IP_address' => '192.168.0.1' . "\0" . '' . "\0" . '' . "\0" . '' 
          ^ ^^ ^^ ^