Š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
$query="INSERT INTO testek VALUES($_POST["stevilka"])";
Tole je syntax error. Saj ti verjetno PHP to javi, ti ne?
$query="INSERT INTO testek VALUES($POST[stevilka])";
Je pa sila nevarna taka praksa, prej bi, če ne drugo, vsaj naredil intval($POST['stevilka']).
Opazil sem, da nisem konsitenten pri pisanju narekovajev. Enojni, dvojni...mi lahko kdo na kak preprosti način razloži razliko?
Ker recimo, zakaj obravnavamo enkrat $stevilka kot string z '$stevilka', potem pa ga evalviramo kot spremenljivko preko ""?:
$query="INSERT INTO testek VALUES('$stevilka')";
Tukaj imaš vse razloženo, sploh pod "variable parsing"
http://php.net/manual/en/language.types.string.php
Z vidika pravilnosti MySQL stavka ja. Sicer, če je $stevilka integer ali float pa bi delovalo tudi brez enojnih navednic.
Ne, ravno obratno je. Če je $stevilka integer ali float mora bit brez narekovajev, deluje pa sicer tudi z.
Aha fanta, odlično. Nisem se zamislil, da je enojni narekovaj posledica MySQL sintakse, sem mislil, da je tu PHP vmes. Sedaj je jasno!