【问题标题】:PDO array result as php variablePDO 数组结果作为 php 变量
【发布时间】:2015-11-28 09:29:30
【问题描述】:

是否可以将 PDO 结果设置为 PHP $variable 并在 PDO 查询之外使用它?这是我想要做的:

SQL 数据库包含:

names:
John
Peter
Allen

我的代码如下所示:

$conn = new PDO("mysql:host=$host;dbname=$db_name",$username,$password);
$conn->query('SET NAMES UTF8');
$sql = "SELECT * FROM $tbl_name";
$q = $conn->prepare($sql);
$q->execute(array($title));
$q->setFetchMode(PDO::FETCH_BOTH);

while($data = $q->fetch()){
$phpvar = "$data[names], ";
}

echo $phpvar;

我想要的结果来自“echo $phpvar;”是:

John, Peter, Allen

【问题讨论】:

  • 表和列名不能被PDO中的参数替换。

标签: php arrays variables pdo


【解决方案1】:

在循环之前声明 $phpvar 并将值连接到它。

$phpvar = '';
while($data = $q->fetch()){
    $phpvar .= "$data[names], ";
}
echo $phpvar;

【讨论】:

  • AAAA我们赢了!这就像一个魅力! :D 谢谢一百万!
【解决方案2】:

只需声明一个空数组并像下面这样使用它。

 $phpvar = array();

    while($data = $q->fetch()){
        array_push($phpvar, $data[names]);
    }

【讨论】:

  • 当我尝试“echo $phpvar;”时,我只是得到“array”
  • @CitronAutobot 使用 var_dump( $phpvar );
  • @CitronAutobot 如果你想要它作为一个字符串使用 implode() 和一个 json 对象你可以使用 json_encode()
【解决方案3】:

主题的变体,但如前所述,声明您希望稍后使用的变量并在循环中填充

$phpvar=array();
while( $rs=$q->fetch() ) $phpvar[]=$rs->names;

print_r( $phpvar );

【讨论】:

    【解决方案4】:

    PDO 正在抛出一个对象。因此,在 $phpvar 中给出空值后,您必须在 while 循环中执行此操作,然后您必须使用 rtrim()

    $conn = new PDO("mysql:host=$host;dbname=$db_name",$username,$password);
    $conn->query('SET NAMES UTF8');
    $sql = "SELECT * FROM $tbl_name";
    $q = $conn->prepare($sql);
    $q->execute(array($title));
    $q->setFetchMode(PDO::FETCH_BOTH);
    $phpvar = '';
    
    while($data = $q->fetchAll()){
    $phpvar .= $data->names;
    $phpvar .= ',';
    }
    
    echo rtrim($phpvar, ",");
    

    【讨论】:

    • 谢谢,但这根本没有给出任何结果。只是一个空白屏幕。我可能做错了什么?
    • 刚刚编辑了答案.. 如果您仍然没有得到应得的答案。我认为您应该检查错误报告是否打开:-/
    【解决方案5】:

    除了您的查询将失败并且您设置PDO::FETCH_BOTH 这是默认设置并且会在您的字符串中为您提供重复的结果之外,只需使用implode()。使用fetchAll() 也更容易:

    $data = $q->fetchAll(PDO::FETCH_ASSOC);
    $phpvar = implode(', ', $data);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-15
      • 2015-08-26
      • 2014-10-18
      • 1970-01-01
      • 1970-01-01
      • 2011-09-25
      相关资源
      最近更新 更多