如何使用php sqlite3查询列中的最大值?
我无法使用PHP从SQLite获得最大值,但得到0零,但如果我在SQLite中运行查询,我将获得正确的值。代码如下所示如何使用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
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';
}