Pagina1 van 1
Forum

Welkom bij de Tweaking4All gemeenschapsforums!
Voor je gaat deelnemen, bekijk de Forum Regels!

Specifieke onderwerpen: Start het onderwerp met de naam van het programma of systeem.
Bijvoorbeeld “MacOS X – Jouw vraag“, of bijvoorbeeld “MS Word – Jouw Tip of Truc“.

Merk op: Omschakelen naar een andere taal zal niet werken als je een post aan het lezen bent aangezien er waarschijnlijk geen vertaling beschikbaar is.



WordPress - Missing...
 
Deel:
Meldingen
Alles wissen

[Opgelost] WordPress - Missing argument 2 for wpdb::prepare()

1 Berichten
1 Gebruikers
0 Vind-ik-leuks
826 Bekeken
 Hans
(@hans)
Famed Member Admin
Deelgenomen: 11 jaar geleden
Berichten: 2700
Topic starter  

Na een update naar WordPress 3.6, zag ik de volgende PHP foutmelding op mijn website:

Missing argument 2 for wpdb::prepare()

Eerst gaf ik WordPress 3.6 de schuld, maar na wat zoeken bleek het dat ik zelf $wpdb->prepare niet correct gebruikte (zie ook dit artikel en deze post op de WP forums).

Quick fix:

Een aantal ontwikkelaars gebruikt $wpdb->prepare() zonder extra parameters;

$wpdb->get_row($wpdb->prepare( "SELECT COUNT(*) FROM table" ));

Het blijkt dus (na GOED lezen) dat de prepare() functie hier niets bijdraagt. Er is niets wat de functie moet schoonmaken. Normaal gesproken gebruik je de prepare() functies om waarden die je aan de query doorgeeft "safe" te maken (m.b.v. %d, %s, %f) zodat er geen foute zaken gebeuren als mensen proberen zogenaamde SQL-Injects te plaatsen.

De bovenstaande SQL query zou er eigenlijk zo uit moeten zien:

$wpdb->get_row( "SELECT COUNT(*) FROM table" );

Voor queries waar we waarden van de eindgebruiker doorgeven aan de query maakt ik zelf de volgende fout:

$wpdb->prepare( "SELECT * FROM table WHERE id = ".$id." AND active=1" );

Effectief deed dit helemaal NIKS. De functie moet daarom aangepast worden naar:

$wpdb->prepare( "SELECT * FROM table WHERE id = %d AND active=1", $id );

Dit zorgt ervoor dat queries veiliger zijn en dat de foutmelding niet meer verschijnt.


   
BeantwoordenCiteren
Deel: