【发布时间】:2017-07-01 01:02:24
【问题描述】:
我有一个 MySQL 表,其中有一个名为 count 的整数列,我正在尝试对其进行一些基本的数学运算,然后更新值。这是我正在尝试执行的一项此类任务的示例。
$sql = 'SELECT count FROM triggers WHERE id = ?';
$params = array($id);
$result = sqlsrv_query($connection, $sql, $params);
$row = sqlsrv_fetch_array($result);
$count = intval($row[0]);
if ($count = 0)
return -1;
$newCount = $count - 1;
$sql = 'UPDATE triggers SET count = ? WHERE id = ?';
$params = array($newCount, $id);
$result = sqlsrv_query($connection, $sql, $params);
我遇到的问题是$newCount 始终等于-1,因此count 的数据库值更新为-1。在一个特定的示例运行中,$count 等于 84,因此它通过了 if 语句。但随后 $newCount 没有设置为 83,而是设置为 -1。
我感觉这与 MySQL 值被视为字符串而不是整数有关,但我认为 intval() 会解决这个问题。我也尝试改用(int),但没有区别。
【问题讨论】:
-
echo $countif 语句前并检查其值 -
可能 count 是一个保留字,并且在您的查询中需要反引号(这使得它失败并且是“false”,它被强制转换为 0,然后从中减去 1)。另外,我建议您尝试直接在查询中更新值。示例:stackoverflow.com/questions/16277339/…
标签: php