私は基本的な計算をして値を更新しようとしているcount
という整数の列を持つMySQLテーブルを持っています。ここに私がやってみたい1つのタスクの例があります。MySQLからPHPへの整数演算
$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に更新されていることです。 1つの特定の例の実行では、$count
は84に等しいので、if文を渡しました。しかし、$newCount
の代わりに83に設定すると、-1に設定されます。
これは整数ではなく文字列として扱われるMySQLの値と関係がありますが、私はintval()
がそれを解決すると考えていました。代わりに(int)
を使ってみましたが、違いはありません。
'ますecho $ count'前にif文と0にキャストされ、これは、それが失敗し、「偽」になって(これはカウントが予約語であることも可能だし、クエリでバッククォートを必要とし、その値 – affaz
をチェック、それから1が引かれる)。また、クエリで値を直接更新することをお勧めします。例:http://stackoverflow.com/questions/16277339/decrement-value-in-mysql-but-not-negative –