我有一张桌子
id | field1 | field2 | ... | field[x-1] | field[x]
1 | val1 | val2 | ... | val[x-1] | val[x]
我正在进行此搜索
for($i = 1; $i <= $x; $i++){
$getvalue = mysql_query("SELECT * FROM table WHERE id='1' AND field".$i." LIKE 'some_value%'")or die(mysql_error());
while($row = mysql_fetch_array($getvalue)){
$j=$i+1;
$val = $row['field'.$j.''];
}
}
表中的一些值(val [1-x])将是相同的,但我只需要获取最后一个值。限制1似乎不起作用。
更新。 不幸的是,大卫建议,我无法更改数据库。它必须是现实的。我有一个文本文件(来自传感器的设置转储),我将它逐行插入到数据库中并检查是否有任何错误。大多数检查运行正常,但我有几行,我需要只选择最后一个进行检查。 我有大约10行像这样
D?
String
R?
String
...
D?
String
R?
String
我对R?之后的最后一个字符串感兴趣。我使用explode()并检查每个值是否在限制范围内。
答案 0 :(得分:2)
ORDER BY id DESC LIMIT 1
:要获得最后一行(最高 = 最后 = 最新 id
),您应该使用:
SELECT * FROM table ORDER BY id DESC LIMIT 1;
您的更新代码(扩展名为mysqli_
)以获取最后一行:
$query= mysqli_query("SELECT * FROM table ORDER BY id DESC LIMIT 1") or die (mysqli_error());
}
$lastRow = mysqli_fetch_row($query);
echo $lastRow['id']; //get the last id
MAX()
:您也可以使用SQL MAX()
函数执行此操作:
SELECT * FROM table WHERE id=(SELECT MAX(id) FROM table)
答案 1 :(得分:0)
通过执行此操作来管理以使其正常工作:
for($i = 1; $i <= 250; $i++){
$getvalue = mysql_query("SELECT * FROM full_dump WHERE file_name='".$_FILES['datafile']['name']."' AND field_".$i." LIKE ' 100,%'")or die(mysql_error());
while($row = mysql_fetch_array($getvalue)){
$i_temp = $i;
}
}
if($i_temp != NULL){
$getvalue = mysql_query("SELECT * FROM full_dump WHERE file_name='".$_FILES['datafile']['name']."' AND field_".$i_temp." LIKE ' 100,%'")or die(mysql_error());
while($row = mysql_fetch_array($getvalue)){
$r = $row['field_'.$i_temp.''];
}
}