Miért csinálja ezt a mysql?
Az a helyzet, hogy van egy ilyenem:
<script>
$(document).ready(function() {
$("#price").on('keyup', function() {
var n = parseInt($(this).val().replace(/\D/g,''),10);
$(this).val(n.toLocaleString());
var res = n.replace(/ /g,"_");
console.log(res);
});
});
</script>
Ezzel azt csinálom, hogy csoportosítom a számokat egy bemeneten.
Van mellette egy ilyenem:
if (!empty($_POST["price"])) {
$price = $_POST["price"];
$indicator += 1;
$price = str_replace(" ", "", $price);
$price = intval($price);
}
Ezzel meg azt csinálom, hogy amikor beteszem ezeket a számokat adatbázisba, akkor újra int és ne string formátumúak legyenek.
Ennek ellenére, hogyha beírom, hogy:
18 000 000
Akkor ennyi kerül be belőle az sql táblába, hogy: 18
A php erre :
$price = "18 000 000";
$price = str_replace(" ", "", $price);
echo $price;
if (!filter_var($price, FILTER_VALIDATE_INT) === false) {
echo("Variable is an integer");
}
Azt írja, hogy "Variable is an integer".
Akkor mér? Valami ötlet?
Köszi a választ!
Magyarul tehát az első space után leszedi a többi számjegyet, és úgy kerül be az adatbázisba, amikor az adatbázisba elvileg már a string replace-lt, és intvalolt cucc kerül be.
Akkor mér?
$update_ad = "UPDATE advertise SET username = '".$_SESSION["username"]."', ad_title = '".$title."',
ad_price = '".$price."', ad_text = '".$adtext."', cathegory = '".$cathegory."', phone = '".$phone."', city = '".$city."',
subcathegory = '".$subcathegory."', active = '".$_POST["active"]."' where id = '".$id_update."' and ad_title = '".$adtitle_update."'";
$conn->query($update_ad);
A js-ben a toLocaleString() nem a 32-es szóközt rakja a szövegbe, hanem a 160-as kódút, ezért nem veszi ki a str_replace, így az intval csak az elejét alakítja számmá. Vagyis az sql is már csak ezt a csonka számot kapja meg.
Megoldás:
$price = str_replace( chr(160), "", $price );
Ja, hogy utf-8, akkor így:
$price = str_replace("\xc2\xa0", "", $price);
Szia! A mysql inject ellen védd le a lekérdezéseidet :))
használj funkciókat a bevitt adatok szigorítására.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!