所以让我解释一下我的问题,让我们假设我运行查询像这样:关于SQL查询的信息,保存用php
$myquery = sql_query("SELECT name FROM table WHERE name='example' LIMIT 0,1");
现在..我想检索到的名称存储到一个变量,所以我会做这样的事情:
while ($myrow = sql_fetch_assoc($myquery)) {
transfer_row($myrow);
print"Name: $row_name";
}
$stored_name = $row_name;
注:transfer_row()只是我写一个函数,$ myrow [ '名']并将其存储在$ ROW_NAME,为了便于参考
现在,在这个阶段一切都很好,这里是它变得有趣的地方。请注意,在这个阶段,我仍然有一个分配给$ row_name的名称。再往下页我运行另一个查询来检索表中的一些其他的信息,我需要检索的事情之一是名称的列表了,所以我只想运行此查询:
$myquery = sql_query("SELECT name, year FROM table WHERE DESC LIMIT 0,10");
while ($myrow = sql_fetch_assoc($myquery)) {
transfer_row($myrow);
$year = $row_year;
$link = "/$year";
print "<li style=\"margin-bottom: 6px;\"><a href=\"$link\">$row_name</a>\n";
}
现在,如果这个查询中的$ row_name与旧查询中的$ row_name相匹配,我想编写一个if语句来执行,这就是为什么我们在变量中存储了第一个$ row_name。
if ($row_name == $stored_name){
// execute code
}
然而,由于大多数人都知道,这不会工作,原因是,它只是再需要$ stored_name并提出新的$ ROW_NAME到$ stored_name,等于是第一个$ ROW_NAME的值丢失,现在,对于我的应用程序来说,至关重要的是我访问第一个$ row_name并在第二个查询运行后比较它,我可以在这里做什么?如果什么都不能做,那么实现这种目标的替代方案是什么。
谢谢。
编辑,MY transfer_row()函数:
function transfer_row($myrow) {
global $GLOBALS;
if(is_array($myrow)) {
foreach ($myrow as $key=>$value) {
$key=str_replace(":","",$key);
$GLOBALS["row_$key"] = $value;
}
}
}
你在哪里把这个if语句?在while循环内?为什么你不能比较而不使用“transfer_row”? – Colandus
你的问题是无关紧要的,如果我没有转移行比较,没有什么区别。 – user3332590
不好意思?这是绝对相关的。如果我们不知道在哪种情况下会发生这种比较,我们将假定它在while循环内。在那种情况下,大卫的答案是正确的。在执行'transfer_row'调用之前进行比较。 – Colandus