0

以下脚本:

<?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 浏览器中,我得到了一长串关于列短语和分数的结果。我究竟做错了什么?

4

3 回答 3

1

这个答案有2个例子。

我在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();
    }
于 2013-08-12T22:49:51.147 回答
0

您需要使用 echo 语句:

$result = $db->query('SELECT * FROM phrases');
foreach($result as $row){
    echo $row['phrase'];
    echo $row['score'];
}   
于 2013-08-12T21:31:12.917 回答
-1
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();
}

尝试删除语句中的分号。

于 2013-08-12T21:29:54.510 回答