我正在使用mysqli_fetch_array并且计数是正确的,直到我更改为fetch(),现在只返回总行数而不是返回每行的每个数字 .
所以对于第一行,我想回显“1”,依此类推 .
NEW NOTE :while语句中的所有其他内容都返回正确的值,但计数器返回总行数,而我想要一个行号,它是从sql语句中选择的顺序 .
As requested. This is my connection.
我不知道我是否想要检查“$ e-> getMessage();”因为我在所有查询中使用此连接,所以在每个查询上 .
try {
$dbh = new PDO('mysql:host=localhost;dbname=my_db;charset=utf8', 'usr', 'pwd',
array(PDO::ATTR_EMULATE_PREPARES => false,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)
);
} catch (PDOException $e){
echo $e->getMessage();
}
This worked
$query = mysqli_query($con, 'SELECT * FROM music');
$count = 0;
while($row = mysqli_fetch_array($query)){
$count++;
echo $count;
}
The new doesn't work.
$query = $dbh->query('SELECT * FROM music');
$count = 0;
while($row = $query->fetch()){
$count++;
echo $count;
}
6 回答
工作正常,使用try catch确实看看你的PDO连接是否正常工作 .
我刚试过这个,它运行正常 . 您的PDO连接不正确或您的查询未返回任何结果 . 我建议你
var_dump($dbh)
并查看它是否返回PDO对象或检查您的查询是否正确 . 你的 table 叫music
吗?它区分大小写 .您还需要将连接形式mysqli更改为PDO
至
您还可以抛出PDO异常以查看是否有任何异常:
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
$ conn-> exec(“SET CHARACTER SET utf8”);
http://coursesweb.net/php-mysql/pdo-select-query-fetch
关于什么:
PDO有一些不同的行为 . 这是你的mysqli的替代品 .
我希望有所帮助 .
尝试使用
PDO::FETCH_NUM
直接获取行数: -***** 这使用查询来获取行计数,并节省了while循环所花费的时间 .
你似乎混淆了PDO和MYSQLI_
您说使用PDO连接后此代码有效吗?但是通过
mysqli_query()
发出查询 . 奇怪!I dont think it did work, or you have changed something and you are not telling us.
应该是这样的
所以你的第二段代码最好这样写: -