仅显示mysql行

时间:2016-02-26 15:09:24

标签: php mysql

我有一张桌子

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()并检查每个值是否在限制范围内。

2 个答案:

答案 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.''];
    }
}