PDO:PHP foreach数组返回null

时间:2016-03-30 09:30:30

标签: php mysql arrays pdo foreach

我做了一个非常简短的PHP。

输出是json中的数组。然而,它不起作用。

数组项始终为null。

我想它必须与错误地调用db table columns

有关

'id' => $row->MASTER_ID)。

而{' MASTER_ID'是我的数据库中列的名称。

如果有人能指出我正确的方向,我会很高兴。 我的脚本如下所示:

<?php
$db = new PDO('mysql:host=xxx;dbname=xx;charset=utf8mb4', 'xx', 'xxx');
$month = date('Y-m');
$monthwild = "$month%";
$sql   = ("SELECT * FROM MASTER WHERE START_DATE LIKE '". $monthwild ."'");
$out = array();

foreach($db->query($sql) as $row) {
    $out[] = array(
        'id' => $row->MASTER_ID,
        'title' => $row->MASTER_TITLE,
        'start' => strtotime($row->MASTER_START),
        'end' => strtotime($row->MASTER_END)
    );
} 

echo json_encode(array('success' => 1, 'result' => $out));
exit;
?>

我是PDO的新手(曾经用mysql做过这样的事情)和

我还没有得到它并且没有找到合适的资源

2 个答案:

答案 0 :(得分:1)

trait Delivery[T] { def form(): Form[T] } object NewPost extends Delivery[NewPostValidator] { def form(): Form[NewPostValidator] = Form(mapping( "town" -> nonEmptyText, "number" -> number)(NewPostValidator.apply)(NewPostValidator.unapply)) } “执行一条SQL语句,将结果集作为PDOStatement对象返回,”不是一行。

您必须将结果放在变量中,然后从此变量中检索行:

PDO::query

或者,您可以设置默认提取模式,然后使用以下内容检索单行:

$result = $db->query( $sql );
while( $row = $result->fetchObject() )
{
    (...)
}

编辑:

实际上,直接$result = $db->query( $sql ); $result->setFetchMode( PDO::FETCH_OBJ ); while( $row = $result->fetch() ) { (...) } 也有效,但没有特定的获取模式,它会返回枚举和关联结果:

foreach

要使用直接foreach( $db->query( $sql ) as $row ) { $id = $row['MASTER_ID']; // $id = $row[0]; // ← Alternative } 的对象,您必须使用以下语法:

foreach

答案 1 :(得分:1)

我说你对$ monthwild的定义是错误的。 你想要写的正确的符号是: $ monthwild = $ month。&#34;%&#34 ;; 在你的脚本中是$ monthwild的内容字符串&#34; $ month%&#34; 现在是$ monthwild字符串%

的内容

我希望你能理解这一点。 它不容易描述。