以下是我从数据库中检索价值的代码
$query = "SELECT * FROM t_contact
WHERE id = {$project_details_id} LIMIT 1";
$all_post_info1 = mysql_query($query, $connection);
confirm_query($all_post_info1);
$project_details = mysql_fetch_array(show_project_details($project_details_id));
foreach ($project_details as $fieldname) {
echo $fieldname . "</br>";
}
并且
function confirm_query($confirm_result) {
if (!$confirm_result) {
die("Database query failed1: " . mysql_error());
}
}
我为每个字段输出两次。我的数据库中有27列,我得到54输出。 例如,数据库中有名称,电子邮件列,我的输出显示为
name
name
email
email
有些请告诉我这段代码有什么问题。
答案 0 :(得分:2)
通过使用MYSQL_BOTH(默认),您将获得一个包含关联索引和数字索引的数组。
那是因为你的$project_details
实际上看起来像这样:
$project_details = array(
[0] => 'name',
[name] => 'name',
[1] => 'email',
[email] => 'email'
);
尝试在mysql_fetch_array
来电中指定MYSQL_ASSOC
。
答案 1 :(得分:1)
尝试这样做:
$query = "SELECT * FROM t_contact
WHERE id = {$project_details_id} LIMIT 1";
$all_post_info1 = mysql_query($query, $connection);
confirm_query($all_post_info1);
while($data = mysql_fetch_assoc($all_post_info1))
{
print_r($data);
}
mysql_fetch_assoc将返回一个关联数组,这意味着一个数组,其中键与查询中的字段相关联。 mysql_fetch_array将返回一个包含字段和数字键值的数组,因此是双变量。我很少使用mysql_fetch_array,几乎在所有情况下都可以使用mysql_fetch_assoc。
答案 2 :(得分:0)
而不是使用foreach,你应该使用while。如前:
while($row = db_fetch_array($all_post_info1)) {
echo $row[field_name];
}
希望它会对你有所帮助。
答案 3 :(得分:0)
mysql_fetch_array()
默认返回索引和关联格式的键。
使用MYSQL_ASSOC
参数仅获取关联版本:
$project_details = mysql_fetch_array(show_project_details($project_details_id), MYSQL_ASSOC);
按照惯例,我还会提醒您 mysql函数已被弃用,您应该考虑使用例如PDO
答案 4 :(得分:0)
更改此行:
$project_details = mysql_fetch_array($project_details_id);
这一行:
$project_details = mysql_fetch_array($project_details_id, MYSQL_ASSOC);