是否可以使用嵌套mysql_fetch_assoc
基本上我使用第一个填充文本框,现在从另一个表我需要获取和图像。如何在不关闭第一个的情况下执行此操作,因为此图像下方有更多需要提取的文本框。
while($row = mysql_fetch_assoc($result)){
?>
<form id="myform" name="myform" action="profiledo.php" method="post">
<p>First Name
<input type="text" name="firstname" id="textfield" value="<?php echo( htmlspecialchars( $row['FirstName'] ) ); ?>" />
<br />
答案 0 :(得分:0)
为了能够多次获取$ result(我认为没有理由),你必须为每次获取进行单一查询。我认为没有理由这样做
答案 1 :(得分:0)
我认为您正在寻找带连接的单个查询。类似的东西:
SELECT * FROM `Profile` NATURAL JOIN `Table with Image`
但确切的查询取决于两个表的模式。
答案 2 :(得分:0)
我认为将所需的所有信息快速放入数组并从内存中访问检索到的数据更有利,而不是在查询循环时缓慢添加它。
// Read records
$query = "SELECT * FROM table WHERE condition";
$query = mysql_query($query);
// Put them in array
for($i = 0; $array[$i] = mysql_fetch_assoc($query); $i++) ;
// Delete last empty one
array_pop($array);
您可以使用print_r($ array)查看结果。
如果图像不在同一个表中,您可以通过类似的标识符(唯一的用户ID?)加入表。
$query = "SELECT * FROM table1, table2 WHERE table1.id=table2.id";
然后第一个用户的名字将是:$ array [0] ['FirstName'],第二个是$ array [1] ['FirstName']等。
布雷克
答案 3 :(得分:0)
答案是,是的,可以使用嵌套的mysql_fetch_assoc()。
虽然我对这个问题不太确定,你当前的实现情况如何,但不管怎么说这里有一些建议:
使用JOIN查询:尽管只有文本框中包含的数据与图像相关时才可能。根据您提供的少量信息,我猜图像是用户的图像,并存储在单独的表中。如果这是真的,那么最明显的实现是图像表由某个用户id引用。假设有User
和UserImage
个表,这就是JOIN查询的样子:
SELECT `User.*`, `UserImage`.`image`
FROM `User`
INNER JOIN `UserImage` ON `User`.`id` = `UserImage`.`user_id`
WHERE `User`.`id` = xxx;
请注意,上面只是一个模板查询,您需要根据您的架构和逻辑进行更改。另外,我没想提到如果每个用户可以有多个图像,上面的实现可能需要一些额外的逻辑。
嵌套的mysql_fetch_assoc()是可能的,但这取决于您的实现。正如您所提到的,第一个(或外部)mysql_fetch_assoc()用于填充文本框。在此范围内,您希望运行另一个mysql_fetch_assoc()来获取图像。因此,如果图像查询在单独的表上运行并作为单独的查询运行,那么您可以将其结果存储在单独的变量中,例如$ result1,然后在该结果集上运行内部mysql_fetch_assoc()。
while ($row = mysql_fetch_assoc($result)) {
// $row array now contains the profile details
$result1 = mysql_query('the query for fetching the image');
while ($row1 = mysql_fetch_assoc($result1)) {
// $row1 array now contains the image
}
}
内部mysql_fetch_assoc()在单独的结果集上运行非常重要。
希望以上有帮助!如果您没有尝试上述任何一项,我将非常感谢您能否提供更多关于您需要的信息。