Še eno mysql vprašanje
5 naročnikov
5 naročnikov
Lep pozdrav!
Zamima me, če kdo najde kako napako v slednji kodi. Nekaj delam narobe.
HTML:
<body>
<form method="post" action="procesiraj.php">
<input name="stevilka" type="text"></input>
<input type="submit" name="submit"></input>
</body>
In še php:
<?php
$dbc=mysqli_connect("localhost", "xxx@localhost", "", "test") or die("Danger, danger Will Robinson, no entry into database!");
$query="INSERT INTO testek VALUES($_POST["stevilka"])";
mysqli_query($dbc,$query);
if (!mysqli_query($dbc,$query))
{
die('Error: ' . mysqli_error($dbc));
}
mysqli_close($dbc);
?>
13 odgovorov
technolog:
Ne, ravno obratno je. Če je $stevilka integer ali float mora bit brez narekovajev, deluje pa sicer tudi z.
"mora" in "vseeno deluje" :)
Tudi osebno (če pišem query na roke) nikoli ne uporabim enojnih navednic pri številskih tipih.
Če tako vrinjaš podatek direktno v SQL stavek in je podatek številka, castaj zadevo v integer, drugače si odprt za razne SQL injectione:
$query="INSERT INTO testek VALUES(" . (int) $_POST["stevilka"] . ")";
Še bolje pa je, da uporabiš nekaj v stilu http://www.php.net/manual/en/mysqli.real-escape-string.php.
P.S.: V primeru kakšnih FB id-jev zna biti da castanje ne bo ok delovalo, ker je FB id večji od max dovoljenega integerja.