我非常擅长MySQL和PHP写作。我遇到的问题是在while
行之前从特定表中提取数据。我目前的代码是
$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";
问题在于,当我试图在while
线之前拉出桌子时,它不会拉动。如果我拉后,它就可以正常工作。
不起作用:
echo ".$row['firstname'].";
while($row = mysql_fetch_array($result)){
工作:
while($row = mysql_fetch_array($result)){
echo ".$row['firstname'].";
此外,在提到mysqli或PDO之前 - 我不能这样做。我正在编写一个加密和硬编码的模块。
答案 0 :(得分:0)
你会感到愚蠢。 $ row变量尚未获取所获取的行。当行
$row = mysql_fetch_array($result)
运行,即将一行的数据提供给$ row。在此点之前调用$ row只会给你一个空值。
每次while循环再次启动时,它都会获得一个新行。这被称为ITERATOR。它一次向下移动一行列表,直到它运行并且什么也没找到。那就是它将退出循环。
编辑(01/23/2015):现在,我了解到您确实希望有两个循环使用相同的结果。我将展示如何重置迭代器。
while($row = mysql_fetch_array($result)) {Do Stuff}
mysql_data_seek($result, 0);
while($row = mysql_fetch_array($result)) {Do Stuff}
希望这有帮助。
答案 1 :(得分:0)
不推荐使用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();
答案 2 :(得分:0)
好的,试试吧。它应该工作。
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);