你得到一个空值:
mysql> create table noRows (id int(3));
Query OK, 0 rows affected (0.03 sec)
mysql> select max(id) from noRows;
+---------+
| max(id) |
+---------+
| NULL |
+---------+
1 row in set (0.00 sec)
但是,您可以使用合并来获得所需的内容:
mysql> select coalesce(max(id),1) from noRows;
+---------------------+
| coalesce(max(id),1) |
+---------------------+
| 1 |
+---------------------+
1 row in set (0.01 sec)
编辑:如果您要检查它,用户已经有一个,如果没有,插入一个新行,据我所知,它不能用一个查询来完成,但以下应该工作:
$receipt = 1000;
$query_receipt = mysql_query("SELECT MAX(receipt) FROM tbl_payments");
$num_rows = mysql_num_rows($query_receipt);
if($num_rows>0)
{
// Assumes $ID to be some unique field used to identify your customer stored in field ID.
$sql="insert into tbl_payments (ID, receipt) values ($ID, $receipt)";
mysql_result($sql)
}
else
{
// Do stuff here to get the receipt from the first resultset.
}
关于这一点,您可能需要考虑放弃旧的不推荐使用的mysql_*
函数并改为使用PDO。它更安全,并且具有更多功能。