我有以下功能:
//Check if file exists
function check_if_file_exists($row,$last_query_id){
$excerpt = $row -> excerpt;
$filename = '/' . $excerpt . '.jpg';
if (file_exists($filename)) {
return $row;
} else {
single_query_for_replacement_value($last_query_id);
}
};
//New query search for the replacement value in case there is no image
function single_query_for_replacement_value($last_query_id){
$query = "SELECT * FROM $table WHERE ID < '$last_query_id' order by ID desc limit 1";
$results = mysql_query($query);
$row = $results[0]; //first and only result
$new_id = $row -> ID;
check_if_file_exists($row,$new_id);
};
这个想法是第一个功能检查每个&#34;摘录&#34;从查询查看文件是否存在。
如果存在,则只返回值。
如果没有,它会使用第二个函数获得另一个值。
但是,如果文件在返回之前存在,则还需要检查此新值。
您会注意到第二个函数没有return
,而是再次调用第一个函数来检查文件。
这个想法是两个函数都会遍历,直到找到带文件的数据。
不会返回新值。我不确定它是否正确。
有人可以给我一个关于如何遍历函数的反馈,只有在文件存在时才会返回吗?
谢谢!
答案 0 :(得分:1)
您可以尝试这样:
function check_if_file_exists($row,$last_query_id){
$excerpt = $row -> excerpt;
$filename = '/' . $excerpt . '.jpg';
if (file_exists($filename)) {
return $row;
} else {
$query = "SELECT * FROM $table WHERE ID < '$last_query_id' order by ID desc limit 1";
$results = mysql_query($query);
$row = $results[0]; //first and only result
$new_id = $row -> ID;
return check_if_file_exists($row,$new_id);
}
};
答案 1 :(得分:0)
更改
function single_query_for_replacement_value($last_query_id){
到
function single_query_for_replacement_value($last_query_id,$offset){
和
$query = "SELECT * FROM $table WHERE ID < '$last_query_id' order by ID desc limit 1";
到
$query = "SELECT * FROM $table WHERE ID < '$last_query_id' order by ID desc limit 1, " . $offset;
和
single_query_for_replacement_value($last_query_id);
到
single_query_for_replacement_value($last_query_id,$offset++);
并从查询中删除WHERE ID < '$last_query_id'
。将偏移量初始化为0。
我们的想法是使用LIMIT 1
和OFFSET 1
一次迭代整个结果集1结果,直到找到您要查找的内容。