PHP PDO 返回空列名
PHP PDO returning null column names
我正在 PHP 中开发 SOAP 服务。
最近我在从 MySQL.
检索结果时遇到了一个问题
问题
检索结果时,我得到的列数多于 SQL 语句中指定的列数。这在处理检索到的信息时会影响我的代码。例如,当我将 fetch()
更改为 fetchAll()
时,我无法处理多个记录。有什么方法可以告诉 PHP
或 MySQL
到 return 正是我需要的列而不是 return 这个垃圾?
示例代码
$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);
这将产生:
object(stdClass)#4 (1) { ["return"]=> string(193) "array ( 'id' => '19', 'username' => 'Batman2', 'IP_address' => '192.168.0.1' . "[=12=]" . '' . "[=12=]" . '' . "[=12=]" . '' . "[=12=]" . '' . "[=12=]" . '' . "[=12=]" . '' . "[=12=]" . '' . "[=12=]" . '' . "[=12=]" . '', )" }
在调用 MySQL 之前,我还尝试使用这些:
$pdo2->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo2->setAttribute(PDO::ATTR_ORACLE_NULLS, PDO::NULL_NATURAL);
然而,这并没有什么不同。
备注
我故意留下 fetch()
而不是 fetchAll()
以消除实施 fetchAll()
可能影响结果的可能性。
您只检索了 3 列。但是,IP 地址末尾有一些空数据。您可以通过字符串之间的连接运算符来判断:
'IP_address' => '192.168.0.1' . "[=10=]" . '' . "[=10=]" . '' . "[=10=]" . ''
^ ^ ^ ^ ^ ^
我正在 PHP 中开发 SOAP 服务。
最近我在从 MySQL.
检索结果时遇到了一个问题
问题
检索结果时,我得到的列数多于 SQL 语句中指定的列数。这在处理检索到的信息时会影响我的代码。例如,当我将 fetch()
更改为 fetchAll()
时,我无法处理多个记录。有什么方法可以告诉 PHP
或 MySQL
到 return 正是我需要的列而不是 return 这个垃圾?
示例代码
$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);
这将产生:
object(stdClass)#4 (1) { ["return"]=> string(193) "array ( 'id' => '19', 'username' => 'Batman2', 'IP_address' => '192.168.0.1' . "[=12=]" . '' . "[=12=]" . '' . "[=12=]" . '' . "[=12=]" . '' . "[=12=]" . '' . "[=12=]" . '' . "[=12=]" . '' . "[=12=]" . '' . "[=12=]" . '', )" }
在调用 MySQL 之前,我还尝试使用这些:
$pdo2->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo2->setAttribute(PDO::ATTR_ORACLE_NULLS, PDO::NULL_NATURAL);
然而,这并没有什么不同。
备注
我故意留下 fetch()
而不是 fetchAll()
以消除实施 fetchAll()
可能影响结果的可能性。
您只检索了 3 列。但是,IP 地址末尾有一些空数据。您可以通过字符串之间的连接运算符来判断:
'IP_address' => '192.168.0.1' . "[=10=]" . '' . "[=10=]" . '' . "[=10=]" . ''
^ ^ ^ ^ ^ ^