MySQL 来自 PHP 的查询 returns 不正确的结果
MySQL query from PHP returns incorrect results
我的MySQLtable"tracks"有这两个字段:
Id (Int)
Name (Varchar 255)
值为:
1 Day 1
2 Day 2
3 Day 3
我正在尝试使用以下函数从 PHP 中检索所有曲目:
function getTracks() {
$query = sprintf('select * from tracks');
return contentRetrieverDataBaseQuery($query)->fetchAssoc();
}
function contentRetrieverDataBaseQuery($query) {
$settings = contentRetrieverGetSettings();
Database::addConnectionInfo('contentRetriever', 'default', $settings['database_connection']);
db_set_active('contentRetriever');
$result = db_query($query);
db_set_active();
return $result;
}
运行 select * from event_tracks
在 phpmyadmin 上我得到了正确的结果。
当我这样做时:
$tracks = getTracks();
foreach ($tracks as $track) {
echo $track['name'];
}
我得到输出“1D”,它是 ID 和名称的第一个字母。
我做错了什么?
编辑:更正了数据库的名称
->fetchAssoc()
总是 returns 单行查询结果,这意味着您的数组是单条记录,并且您的循环将把该行的字符串值放入 $track
。然后,您将 $track
当作一个数组来使用,生成以下等效代码:
$arr = array('abc', 'def'); // your one row of query results.
foreach($arr as $value) {
// $value is now 'abc';
echo $value['name']; // parsed/executed as $value[0];
// output is 'a'
}
字符串可以被视为字符数组,这就是 PHP 没有抱怨 $tracks['name']
的原因。它只是将 ['name']
视为使用非数字数组索引的愚蠢尝试,并将其转换为 0
.
我的MySQLtable"tracks"有这两个字段:
Id (Int)
Name (Varchar 255)
值为:
1 Day 1
2 Day 2
3 Day 3
我正在尝试使用以下函数从 PHP 中检索所有曲目:
function getTracks() {
$query = sprintf('select * from tracks');
return contentRetrieverDataBaseQuery($query)->fetchAssoc();
}
function contentRetrieverDataBaseQuery($query) {
$settings = contentRetrieverGetSettings();
Database::addConnectionInfo('contentRetriever', 'default', $settings['database_connection']);
db_set_active('contentRetriever');
$result = db_query($query);
db_set_active();
return $result;
}
运行 select * from event_tracks
在 phpmyadmin 上我得到了正确的结果。
当我这样做时:
$tracks = getTracks();
foreach ($tracks as $track) {
echo $track['name'];
}
我得到输出“1D”,它是 ID 和名称的第一个字母。
我做错了什么?
编辑:更正了数据库的名称
->fetchAssoc()
总是 returns 单行查询结果,这意味着您的数组是单条记录,并且您的循环将把该行的字符串值放入 $track
。然后,您将 $track
当作一个数组来使用,生成以下等效代码:
$arr = array('abc', 'def'); // your one row of query results.
foreach($arr as $value) {
// $value is now 'abc';
echo $value['name']; // parsed/executed as $value[0];
// output is 'a'
}
字符串可以被视为字符数组,这就是 PHP 没有抱怨 $tracks['name']
的原因。它只是将 ['name']
视为使用非数字数组索引的愚蠢尝试,并将其转换为 0
.