Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用php sqlite3查询列中的最大值?_Php_Sqlite - Fatal编程技术网

如何使用php sqlite3查询列中的最大值?

如何使用php sqlite3查询列中的最大值?,php,sqlite,Php,Sqlite,我无法使用PHP从SQLite获得最大值,但得到0零,但如果我在SQLite中运行查询,我将获得正确的值。代码如下所示 class MyDB extends SQLite3 { function __construct() { $this->open('data.db'); } } $con = new MyDB(); $sql = "SELECT MAX(sd_id) FROM stu_data ORDER BY sd_id DESC LIMIT 1"; $r

我无法使用PHP从SQLite获得最大值,但得到0零,但如果我在SQLite中运行查询,我将获得正确的值。代码如下所示

class MyDB extends SQLite3 {
  function __construct() {
     $this->open('data.db');
  }
}
$con = new MyDB();

  $sql = "SELECT MAX(sd_id) FROM stu_data ORDER BY sd_id DESC LIMIT 1";
  $result = $con->query($sql);
  if ($result) {   
      if($row = $result->fetchArray(PDO::FETCH_ASSOC)) {
          $lclId = $row[0]["MAX(sd_id)"] + 1;
          $lclNo = $lclId;
      }
  } else {
$lclNo = '1';
}

这里我得到的$row[0][sd_id]始终为零。

您的返回值不称为sd_id,因为您没有对该值进行别名。你可以使用

$row['MAX(sd_id)']
或者最好在查询中提供列别名:

SELECT MAX(sd_id) AS max_sd_id FROM stu_data
然后您可以将其称为$row['max\u sd\u id']。e、 g

请注意,查询中的ORDER BY sd_id DESC LIMIT 1没有意义,因为它无论如何只返回1个值

class MyDB extends SQLite3 {
  function __construct() {
  $this->open('data.db');
 }
}
$con = new MyDB();

$sql = "SELECT MAX(sd_id) FROM stu_data ORDER BY sd_id DESC LIMIT 1";
$result = $con->query($sql);
if ($result) {   
  if($row = $result->fetchArray(SQLITE3_ASSOC)) {
      $lclId = $row[0]["MAX(sd_id)"] + 1;
      $lclNo = $lclId;
  }
} else {
$lclNo = '1';
}

区别在于需要使用fetchArraySQLITE3_ASSOC而不是fetchArrayPDO::FETCH_ASSOC

$row[0][sd\u id]这意味着您试图获取0个数字索引,因此要使其动态。如果在$row中获得更多结果,则写入var_dump$row的输出;从stu_数据中选择MAXsd_id只返回1行,其中只有i列,因此其余:ORDER BY sd_id DESC LIMIT 1是无用的。“这里我得到的$row[0][sd_id]始终为零0。”-如果启用了正确的PHP错误报告,您可能会从PHP收到一条警告,说明此索引不存在。你现在首先应该去做什么。检查$row实际包含的内容也会有所帮助。我只需要从列中获取一行的最大值。
class MyDB extends SQLite3 {
  function __construct() {
  $this->open('data.db');
 }
}
$con = new MyDB();

$sql = "SELECT MAX(sd_id) FROM stu_data ORDER BY sd_id DESC LIMIT 1";
$result = $con->query($sql);
if ($result) {   
  if($row = $result->fetchArray(SQLITE3_ASSOC)) {
      $lclId = $row[0]["MAX(sd_id)"] + 1;
      $lclNo = $lclId;
  }
} else {
$lclNo = '1';
}