查询返回值和空数组


Query return and empty array

以下脚本:

<?php
try 
{
    $db = new PDO("sqlite:./path/phrases");
    $result = $db->query('SELECT * FROM phrases');
    foreach($result as $row){
        $row['phrase'];
        $row['score'];
    }    
}
catch(PDOException $e)
{
    echo $e->getMessage();
}
?>

正在返回:

Warning: Invalid argument supplied for foreach() in myscript.php on line 5

如果我执行:从短语中选择*;在SQL浏览器中,我会返回一长串关于列短语和分数的结果。我做错了什么?

这个答案中有两个例子

我在http://juanmanuelllona.blogspot.ca/

我正在提供我所希望的解决方案。

1)

try {
$db = new PDO("sqlite:./path/phrases");
echo 'database open';
$sql = "SELECT * FROM phrases";
$obj= $db->query($sql) ;
foreach ($obj as $row)
{
print('Phrase ='.$row['phrase'].' Course='.$row['score']. '&ltbr/>'); // or <br/>
}
}
catch(PDOException $e)
{
echo $e->getMessage();
}

2)

这个建议来自http://www.phpro.org/tutorials/Introduction-to-PHP-PDO.html

/*** mysql hostname ***/
$hostname = 'localhost';
/*** mysql username ***/
$username = 'username';
/*** mysql password ***/
$password = 'password';
try {
    $dbh = new PDO("mysql:host=$hostname;dbname=phrases", $username, $password);
    /*** echo a message saying we have connected ***/
    echo 'Connected to database<br />';
    /*** The SQL SELECT statement ***/
    $sql = "SELECT * FROM phrases";
    foreach ($dbh->query($sql) as $row)
        {
        print $row['phrase'] .' - '. $row['score'] . '<br />';
        }
    /*** close the database connection ***/
    $dbh = null;
}
catch(PDOException $e)
    {
    echo $e->getMessage();
    }

您需要使用echo语句:

$result = $db->query('SELECT * FROM phrases');
foreach($result as $row){
    echo $row['phrase'];
    echo $row['score'];
}   
try 
{
    $db = new PDO("sqlite:./path/phrases");
    $result = $db->query('SELECT * FROM phrases;'); // remove the Semicolon 
    foreach($result as $row){
        $row['phrase'];
        $row['score'];
    }    
}
catch(PDOException $e)
{
    echo $e->getMessage();
}

请尝试删除语句中的分号。