在 WHILE 之前拉取加入的 Table 数据
Pulling Joined Table Data Before WHILE
我在 MySQL 和 PHP 写作方面非常陌生。我遇到的问题是在 while
行之前从特定的 table 中提取数据。我当前的代码是
$query_join_tables = "SELECT m.*, c.id, c.firstname, c.lastname,
IFNULL(m.system_customer,c.id) AS client_id
FROM ... AS m
LEFT
JOIN ... as c
ON m.system_customer = c.id
WHERE system_customer=".$clientid."
ORDER BY system_id ASC";
$result = mysql_query($query_join_tables);
if (!$result) {
die('Invalid query: ' . mysql_error());
}
echo "BLA BLA BLA";
while($row = mysql_fetch_array($result)){
echo "MORE BLA BLA";
问题是,当我尝试从 table 行之前的 while
行拉取时,它不会拉取。如果我之后拉,它工作得很好。
无效:
echo ".$row['firstname'].";
while($row = mysql_fetch_array($result)){
有效:
while($row = mysql_fetch_array($result)){
echo ".$row['firstname'].";
此外,在提到 mysqli 或 PDO 之前 - 我做不到。我正在为加密和硬编码的东西编写一个模块。
你会觉得很傻。 $row 变量还没有得到获取的行。当行
$row = mysql_fetch_array($result)
是运行,也就是ONE行的数据给$row的时候。在此之前调用 $row 只会给你一个空值。
每次 while 循环再次开始时,它都会得到一个新行。这称为迭代器。它一次在列表中向下移动一行,直到它 运行s 并且什么也没找到。那就是它退出循环的时候。
编辑 (01/23/2015): 现在我知道您实际上想让两个循环使用相同的结果。我将展示如何重置迭代器。
while($row = mysql_fetch_array($result)) {Do Stuff}
mysql_data_seek($result, 0);
while($row = mysql_fetch_array($result)) {Do Stuff}
希望对您有所帮助。
mysql 扩展已弃用,将来会被删除。使用 mysqli。试试下面的代码。
$con = mysqli_connect("localhost","root","","dbname");
$query_join_tables = "SELECT m.*, c.id, c.firstname, c.lastname,
IFNULL(m.system_customer,c.id) AS client_id
FROM ... AS m
LEFT
JOIN ... as c
ON m.system_customer = c.id
WHERE system_customer=".$clientid."
ORDER BY system_id ASC";
$result = $con->query($query_join_tables);
$row = mysqli_fetch_array($result,MYSQLI_ASSOC);
echo $row["firstname"];
$conn->close();
好的,试试这个。应该可以。
mysql_connect("localhost", "root", "") or
die("Could not connect: " . mysql_error());
mysql_select_db("dbName");
$query_join_tables = "SELECT m.*, c.id, c.firstname, c.lastname,
IFNULL(m.system_customer,c.id) AS client_id
FROM ... AS m
LEFT
JOIN ... as c
ON m.system_customer = c.id
WHERE system_customer=".$clientid."
ORDER BY system_id ASC";
$result = mysql_query($query_join_tables);
$res = mysql_fetch_array($result);
echo $res['vBookName'];
mysql_free_result($result);
我在 MySQL 和 PHP 写作方面非常陌生。我遇到的问题是在 while
行之前从特定的 table 中提取数据。我当前的代码是
$query_join_tables = "SELECT m.*, c.id, c.firstname, c.lastname,
IFNULL(m.system_customer,c.id) AS client_id
FROM ... AS m
LEFT
JOIN ... as c
ON m.system_customer = c.id
WHERE system_customer=".$clientid."
ORDER BY system_id ASC";
$result = mysql_query($query_join_tables);
if (!$result) {
die('Invalid query: ' . mysql_error());
}
echo "BLA BLA BLA";
while($row = mysql_fetch_array($result)){
echo "MORE BLA BLA";
问题是,当我尝试从 table 行之前的 while
行拉取时,它不会拉取。如果我之后拉,它工作得很好。
无效:
echo ".$row['firstname'].";
while($row = mysql_fetch_array($result)){
有效:
while($row = mysql_fetch_array($result)){
echo ".$row['firstname'].";
此外,在提到 mysqli 或 PDO 之前 - 我做不到。我正在为加密和硬编码的东西编写一个模块。
你会觉得很傻。 $row 变量还没有得到获取的行。当行
$row = mysql_fetch_array($result)
是运行,也就是ONE行的数据给$row的时候。在此之前调用 $row 只会给你一个空值。
每次 while 循环再次开始时,它都会得到一个新行。这称为迭代器。它一次在列表中向下移动一行,直到它 运行s 并且什么也没找到。那就是它退出循环的时候。
编辑 (01/23/2015): 现在我知道您实际上想让两个循环使用相同的结果。我将展示如何重置迭代器。
while($row = mysql_fetch_array($result)) {Do Stuff}
mysql_data_seek($result, 0);
while($row = mysql_fetch_array($result)) {Do Stuff}
希望对您有所帮助。
mysql 扩展已弃用,将来会被删除。使用 mysqli。试试下面的代码。
$con = mysqli_connect("localhost","root","","dbname");
$query_join_tables = "SELECT m.*, c.id, c.firstname, c.lastname,
IFNULL(m.system_customer,c.id) AS client_id
FROM ... AS m
LEFT
JOIN ... as c
ON m.system_customer = c.id
WHERE system_customer=".$clientid."
ORDER BY system_id ASC";
$result = $con->query($query_join_tables);
$row = mysqli_fetch_array($result,MYSQLI_ASSOC);
echo $row["firstname"];
$conn->close();
好的,试试这个。应该可以。
mysql_connect("localhost", "root", "") or
die("Could not connect: " . mysql_error());
mysql_select_db("dbName");
$query_join_tables = "SELECT m.*, c.id, c.firstname, c.lastname,
IFNULL(m.system_customer,c.id) AS client_id
FROM ... AS m
LEFT
JOIN ... as c
ON m.system_customer = c.id
WHERE system_customer=".$clientid."
ORDER BY system_id ASC";
$result = mysql_query($query_join_tables);
$res = mysql_fetch_array($result);
echo $res['vBookName'];
mysql_free_result($result);