Strict Standards

  • Beste


    Nu heb ik mijn hosting verplaats. Ik ben van directadmin naar cpanel gegaan en ik krijg direct errors over mijn gehelen site. Dit is er een van:




    PHP
    Strict Standards: Only variables should be passed by reference in /home/***/public_html/***.com/user/models/config.php on line 85



    De betreffende lijnen zijn in volgorde: 84-85-86-87


    PHP
    $stmt = $mysqli->prepare("DELETE FROM ".$db_table_prefix."sessions WHERE ? >= (`sessionStart` + ?)");
    $stmt->bind_param("ii", time(), parseLength($remember_me_length));
    $stmt->execute();
    $stmt->close();


    Iemand een idee? Of ligt het aan cpanel? Want ik kom deze fouten over mijn gehele site tegen...

  • Hallo,


    Je php.ini standaard instelllingen aanpassen zou voldoende moeten zijn. Of dit in het begin van je script plaatsen en het komt in orde dacht ik.


    Edit:


    Code
    Error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT);


    Met vriendelijke groeten,


    A.Tytgat

  • mysqli_stmt->bind_param() verwacht in parameter 2, 3 enzovoorts variabelen - je hebt daar functies staan.


    Jammergenoeg heeft mysqli geen bind_value() methode zoals PDO, dus je zult hier variabelen van moeten maken.


    Of, wat ik zou doen en als dit een optie is, maak bij voorkeur geen gebruik van prepared statements in mysqli. Het is gewoon niet zo handig :s (*uche*understatement*uche*).

  • mysqli_stmt->bind_param() verwacht in parameter 2, 3 enzovoorts variabelen - je hebt daar functies staan.


    Jammergenoeg heeft mysqli geen bind_value() methode zoals PDO, dus je zult hier variabelen van moeten maken.


    Of, wat ik zou doen en als dit een optie is, maak bij voorkeur geen gebruik van prepared statements in mysqli. Het is gewoon niet zo handig :S (*uche*understatement*uche*).

    Hartelijk dank! Dit was de fout! Nu al mijn pagina's nog aanpassen :D

  • Prepared statements hebben pas een zekere meerwaarde als de query-sjablonen (die je in je prepare() definieert) meerdere keren worden uitgevoerd (met execute()).


    Realiseer je goed dat in deze constructie zowel de prepare() als de execute() een query naar je database stuurt. Elke SELECT-query met deze opzet voert dus effectief TWEE queries uit.

  • Nu stuit ik weer op een probleem. In mijn browser blijft hij nu steeds de volgende foutmelding weergeven als ik mijn form probeer te submitten:


    SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens


    Mijn code:


  • Wat is dit? PDO?


    Zoals de foutmelding zegt: er ontbreken een of meer tokens, in dit geval ontbreekt "herUniverse".


    Waar ik mij meer zorgen over zou maken is de database-structuur. Ik bedoel, ik bespeur een zeker patroon :s. Zouden skills en talents niet beter in aparte (koppel)tabellen opgeslagen kunnen worden?

  • Vraag me sws af waarom je zoveel waarden allemaal zou moeten versturen. Lijkt me dat een helehoop standaard waarden zijn en die kan je ook van te voren instellen in je database en dan alleen de waarden die anders zijn naar je database sturen. Scheelt een hoop laadtijd

Participate now!

Heb je nog geen account? Registreer je nu en word deel van onze community!