sql >> Databasteknik >  >> RDS >> Mysql

Skillnaden mellan PDO->query() och PDO->exec()

Trots vilken teoretisk skillnad som helst, bör ingen av dessa funktioner användas ändå - så det finns inget att oroa sig för.

Det enda skälet till att använda PDO är stöd för förberedda uttalanden , men ingen av dessa funktioner erbjuder det. Så de ska inte användas.

Använd prepare()/execute() istället särskilt för UPDATE,INSERT,DELETE-satser.

Observera att även om förberedda uttalanden annonseras allmänt som en säkerhetsåtgärd, är det bara för att fånga människors uppmärksamhet. Men deras riktiga syftet är korrekt frågeformatering . Vilket ger dig säkerhet också - eftersom korrekt formaterad fråga inte kan injiceras lika bra - precis som bieffekt. Men återigen – formatering är ett primärt mål, bara för att även oskyldiga data kan orsaka ett frågefel om de inte formateras på rätt sätt.

EDIT:Observera att execute() returnerar endast TRUE eller FALSE för att indikera framgång för operationen. För annan information, till exempel antalet poster som påverkas av en UPDATE , metoder som rowCount() är försedda. Se dokumenten .



  1. Hur man lägger till en separator till en sammanfogad sträng i MySQL – CONCAT_WS()

  2. Kopiera PostgreSQL-databas till en annan server

  3. PDO flera namngivna platshållare hämtar inte data

  4. mysql:varför att jämföra en 'sträng' med 0 ger sant?