sql >> Databasteknik >  >> RDS >> Mysql

MYSQLI förberedd sats bind_param-typer fungerar inte

$stmt->bind_param() kontrollerar inte de givna variablerna för en viss typ, den konverterar dem bara till den angivna typen. Och din sträng 'aaaaaaa' omvandlas till ett int-värde:0. Det är så php gör det.

Databasinsertsatsen är fel plats att kontrollera om dina variabler innehåller användbara/korrekta värden. Gör det innan och försök bara att infoga dem om dina valideringar fungerar.

För att göra valideringen för en int kan du använda php-funktionen is_numeric() eller is_int().



  1. Rätt sätt att hantera dubbelriktad 1:m i Green-DAO

  2. Så här löser du django.db.utils.IntegrityError:(1364, fältet "namn" har inte ett standardvärde)

  3. PDO anslutningstest

  4. Oracle uttalande