我遇到了INT字段的问题。问题是当我在屏幕上打印值是OK但是当我更新数据库寄存器时再添加一个。
$today = date('Y-m-d H:i:s');
$query = "SELECT id_ad, ad_printed FROM ads WHERE (ad_type = \"990x90\" OR (ad_type = \"728x90\" OR ad_type = \"250x90\")) AND ad_date_start <= \"$today\" AND ad_date_finish >= \"$today\"";
$result = mysqli_query($link, $query);
while ($row = mysqli_fetch_array($result)) {
$new_value = $row['ad_printed'] + 1;
$curr_id = $row['id_ad'];
$query_upd = "UPDATE ads SET ad_printed = '".$new_value."' WHERE id_ad = '".$curr_id."' LIMIT 1;";
$upd = mysqli_query($link, $query_upd);
}
有人知道会发生什么吗?
I.E.如果原始值为26,则新值必须为27. $new_value
为27,但它注册为28 ... :(
答案 0 :(得分:0)
如果你想在sql中增加一个值,请不要将列值包装成引号,否则sql会将列值作为字符串处理。请确保您的列类型正确,例如integer
而不是varchar
UPDATE ads SET ad_printed = (ad_printed + 1) WHERE id_ad = '".$curr_id."' LIMIT 1;
//修改
如果直接将变量传递给sql,请查看mysqli_real_escape_string
函数以防止sql注入。