PHP ile MySQL DB bir tamsayı tanımlanan sütun güncelleniyor

2 Cevap php

Ben bu gibi tanımlanmış bir tablo var:

create table users (
  id int(10),
  age int(3),
  name varchar (50)
)

Ben sadece age, bir tamsayı olduğu güncellemek için bir sorgu kullanmak istiyorsanız, bu bir html formu geliyor.

Onu günceller yönteme geldiğinde, bir dize olarak geliyor, bu yüzden PHP ile tamsayı ve tablosunu güncelleştirmek için denemek için değiştirin, ama çalışmıyor

$age = intval($age);
$q2 = "UPDATE users SET age='$age'  where username like '$username';";
mysql_query($q2,$con);

2 Cevap

Bir tamsayı için $age dizesini döküm gerek yok.

Daha da önemlisi, use mysql_real_escape_string() to protect against SQL injection.

$q2 = "UPDATE users SET age = " . mysql_real_escape_string($age, $con)
    . " WHERE name = '" . mysql_real_escape_string($username, $con) . "'";
mysql_query($q2, $con);

Sorgunuz username alanını kullanır, ama CREATE deyimi name diyor

Ayrıca, gerçekten (birinin adı sağlıyorsa ' OR 1=1;-- şeyler kıracağız) prepared statements SQL enjeksiyon saldırıları önlemek için kullanarak içine bakmak gerekir. Son olarak, username LIKE '$username' yerine username = '$username' içinde yapıyoruz bir nedeni var mı? $username bunu hiçbir% s varsa aynı kapıya çıkıyor