Meddelande

Minska
No announcement yet.

Fel antal variabler i prepared statments

Minska
X
 
  • Filter
  • Klockan
  • Show
Clear All
new posts

  • Fel antal variabler i prepared statments

    Hej

    Får följande felmeddelande
    Warning: mysqli_stmt::bind_param(): Number of variables doesn't match number of parameters in prepared statement in /share/MD0_DATA/Web/devsoladmin/include/dbops.php on line 41
    när jag kör följande fråga
    PHP-kod:
    $sql "SELECT K.Kund_ID, K.Namn, K.Kundnr FROM tblKund AS K WHERE K.Kund_ID NOT IN (SELECT KundID FROM tblLBokf WHERE Period>='?') AND K.Avslutad = FALSE ORDER BY K.Kundnr";
            
    $resultat=$dbops->dbselect($sql,"s","2015-12-07"); 
    funktionen i dbops ser ut så här
    PHP-kod:
    function dbselect($sql,$paratype,$params){
    if(!
    $stmt=self::$connect->prepare($sql)){
                die(
    'Query error: ' self::$connect->errno '-' self::$connect->error);
            }
            
    $stmt->bind_param($paratype,$params);
            
    $stmt->execute();
            
    $result=$stmt->get_result();
            
          
            if (
    $result->num_rows == 1) {    
                return 
    $result->fetch_assoc();
            }
            elseif(
    $result->num_rows 1){
                return 
    $result->fetch_all(MYSQLI_ASSOC);
            }
            else {
                return 
    $result;
            }
            
    $result->free(); 
    jag har ju bara 1 variabel och den är en sträng så varför stämmer det inte?
    Lär ju vara ett litet komma jag glömt någonstans
    Med vänlig hälsning

    Clownen

  • #2
    Ta bort apostroferna runt frågetecknet i din SQL-fråga.
    "Det finns tre sorters lögn; vanlig lögn, förbannand lögn och statistik" - Mark Twain

    Kommentera


    • #3

      Tackar, funkar fint.
      Lite ologiskt då jag var tvungen att sätta dem inom ' om jag körde frågan på traditionellt sätt.
      Med vänlig hälsning

      Clownen

      Kommentera


      • #4
        När du kör prepared statements ska du inte använda apostrofer, det gör också att du slipper oroa dig för SQL-injections. Mysqli/PDO sköter det åt dig.
        "Det finns tre sorters lögn; vanlig lögn, förbannand lögn och statistik" - Mark Twain

        Kommentera

        Working...
        X