Php 获取数据库和回显id的最新行

Php 获取数据库和回显id的最新行,php,mysql,Php,Mysql,我只需要获取数据库的最新一行并回显该行的id。我似乎无法让它工作。当我尝试加载php页面时,我只得到一个“内部服务器错误” <?php include ("connection.php"); $query = mysql_query('SELECT id FROM timestamp ORDER BY id DESC LIMIT 1'); $result = mysqli_query($link, $query); $row = mysqli_fetch_

我只需要获取数据库的最新一行并回显该行的id。我似乎无法让它工作。当我尝试加载php页面时,我只得到一个“内部服务器错误”

<?php 
include ("connection.php");
$query = mysql_query('SELECT id FROM timestamp ORDER BY id DESC LIMIT 1');
        $result = mysqli_query($link, $query);
        $row = mysqli_fetch_array($result);
        echo $row['id'];
?>

改用下面的查询

select * from (SELECT id FROM timestamp ORDER BY id DESC) abc limit 1

首先,您使用两个不同的MySQL函数进行查询:

$query = mysql_query('SELECT id FROM timestamp ORDER BY id DESC LIMIT 1');
         ^^^^^^^^^^^
        $result = mysqli_query($link, $query);
                  ^^^^^^^^^^^^
我们不知道您使用什么MySQL API连接

不同的MySQL API不会混合使用。您需要从连接到查询使用相同的连接

从代码中删除
mysql\u query
,不需要括号

$query = 'SELECT id FROM timestamp ORDER BY id DESC LIMIT 1';
        $result = mysqli_query($link, $query);
并假设(成功)
mysqli
连接

  • 参考:
如果查询中有任何错误,也可以将
或die(mysqli\u error($link))
添加到
mysqli\u query()

其他参考资料:

您还可以使用
mysqli\u insert\u id()

返回上次查询中使用的自动生成的id


脚注:

任何询问时间戳的人。这不是一个MySQL“保留”字,而是一个“关键字”。那是两种完全不同的动物

它旁边没有
(R)
时间戳
,而不是说
TINYBLOB(R)

因此,不需要在表名周围加上记号。

为什么要使用“mysql”?mysql_uu函数现在已被弃用。您应该使用“mysqli”或PDOmysqli支持的与“mysql”相同的功能

示例如何使用mysqli

<?php
$con=mysqli_connect("localhost","my_user","my_password","my_db");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

mysqli_query($con,"INSERT INTO Persons (FirstName,LastName,Age)
VALUES ('Glenn','Quagmire',33)");

// Print auto-generated id
echo "New record has id: " . **mysqli_insert_id($con)**;

mysqli_close($con);
?>
面向对象风格-

<?php 
include ("connection.php");
$query = new mysqli_query('SELECT id FROM timestamp ORDER BY id DESC LIMIT 1');
    $result = new mysqli_query($link, $query);
     $row = new mysqli_fetch_array($result);
    echo $row['id'];
   ?>

尝试使用此代码。您必须使用“mysqli\u查询”而不是“mysql\u查询”



谢谢

mysql\u query
mysqli\u query
?哦,我明白了。谢谢当你放入limit子句时,它在order by之前,返回的结果只包含一行,然后进行排序。为了首先获得排序,我们需要进行一个子查询,对结果进行排序,然后限制行数。如果我没有遗漏任何内容,那么还需要提到名为
timestamp
的表。我知道你可以这样命名,但你知道…^^。脚注后编辑:此注释与视觉主题的关系大于与功能主题的关系。有这样一个名称的表是“奇怪的”。@我以前被问过的第一个关于OP何时使用关键字的问题&有人说它需要在它周围打勾。所以,我只是在看我的水晶球,再一次;-)对于未来的访问者来说,这个问题。有些人认为关键词需要勾选;不完全正确。插入时需要勾选关键字。比如说<代码>插入时间戳(col)值('val')
。如果列名和括号之间没有空格,则为空。但在某些系统中,即使使用空格
时间戳(col)
,也可能引发错误。这可能有点敏感,明白了。我再也不能支持你的答案了。不管怎么说,我只是觉得值得一提的是,有时候可能会让人困惑,在桌子上使用一个更具启发性的名字也会很好。但是你知道,也许这对OP来说足够有启发性。@FirstOne确实你是对的。最好尽量避免使用这样的词语;说得好;-)干杯,谢谢。你读了最近链接到的页面了吗?Daenu请阅读他们不想知道“mysql”使用或“mysqlii”的问题…他们只想知道如何获得最后一行…他们使用“mysql”而不是“mysqli”…我们可以给出使用“mysqli”的建议但根据他们的问题,我的ans是完美的。那么为什么你不建议呢?如果我不给出建议,并不意味着我的ans是错误的,那么为什么“否决”Daenu我认为在2015年有必要指出,至少,如果你在回答中提到这一点,我将推翻我的否决票
<?php 
include ("connection.php");
$query = new mysqli_query('SELECT id FROM timestamp ORDER BY id DESC LIMIT 1');
    $result = new mysqli_query($link, $query);
     $row = new mysqli_fetch_array($result);
    echo $row['id'];
   ?>
<?php 
include ("connection.php"); //contains mysqli_connect information (the $mysqli variable)

$query = mysqli_query('SELECT id FROM timestamp ORDER BY id DESC LIMIT 1');
        $result = mysqli_query($mysqli, $query);
        $row = mysqli_fetch_array($result);
        echo $row['id'];
?>