Stručné způsob, jak kontrolovat variabilní přítomnost MySQL INSERT IGNORE dotaz pomocí PHP

hlasů
0

Píšu PHP skript pro přidání položky do nákupního košíku. Můj nákupní košík tabulka obsahuje pole pro jméno uživatele, ID produktu, ID relace, poznámky a několik dalších. Některá pole může být prázdné. Například:

Pokud je někdo nejste přihlášeni, pak budu ukládat své ID relace v tabulce a pokud se přihlásíte, přidejte své jméno uživatele, takže mám permanant cestu tak, aby odpovídala příslušné položky v tabulce pro uživatele. Pokud tomu tak je, budu přidat ID uživatele. Když přijde na INSERT IGNORE dotaz, můžu udělat něco takového:

$ Add_sql = Vložit ignorovat do sessionBasket (userid) hodnoty ( ' isset ($ _ BLOK [ userid]) $ _SESSION [ userid]:.? ). ';

Bylo by mi ušetřit tolik času na variabilní kontrolu a větvení, protože lidé by mohla být podepsána nebo ne, předměty by mohly mít poznámky nebo ne, takové věci.

Položena 27/08/2009 v 00:04
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
1

Jejda! SQL Injection! byste mohli přijít o celou svoji databázi

Ty by měly být při pohledu na připravených příkazů pro vaši vložení SQL.

Musíte použít mysqli rozhraní, ale to vypadá takto:

$statement = $db_connection->prepare("insert into ... VALUES(?)");
$statement->bind_param("id", $sid);
$statement->execute();

Tím se zabrání SQL injection útoky.

Na absolutní minimum byste měli alespoň uniknout řetězec.

$sid = isset($_SESSION[userid]) ? mysql_real_escape_string($_SESSION[userid])) : '';
$add_sql = "insert into ... values($sid)";
Odpovězeno 27/08/2009 v 00:12
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more