2012-06-21 10 views
14

Voglio sfuggire alla stringa in Magento, ma quando sto usando mysql_real_escape_string, sto ricevendo un avviso.Come mysql escape in magento?

Warning: mysql_real_escape_string() [function.mysql-real-fuga-string]: Impossibile connettersi a MySQL locale server tramite presa /var/lib/mysql/mysql.soc' .... . '

Impossibile trovare la funzione di escape mysql di base di Magento. Quindi cosa dovrei fare?

+0

Sì, e ancora googlando per trovare la risposta. – user1463076

+0

provare: http://forums.cpanel.net/f354/cant-connect-local-mysql-server-through-socket-var-lib-mysql-mysql-sock-111-a-78444.html e: http : //stackoverflow.com/questions/5376427/cant-connect-to-local-mysql-server-through-socket-var-mysql-mysql-sock-38 – alfasin

risposta

24

Utilizzare questo per sfuggire a una stringa per una query e aggiungere le virgolette singole circostanti:

Mage::getSingleton('core/resource')->getConnection('default_write')->quote($string); 

È possibile cercare Varien_Db_Adapter_Pdo_Mysql per i dettagli ulteriori quoting, se necessario.

+0

Grazie, questa funzione sta eseguendo correttamente l'escape della stringa. Aggiunge anche citazioni all'inizio e alla fine della stringa. Spero che funzionerà ora. – user1463076

+1

Potresti contrassegnare la domanda come risposta? – Vinai

+1

questa citazione aggiungeva virgolette all'inizio e alla fine della stringa. Poi ho testato Magento senza alcuna funzione di escape e non è necessario sfuggire alla stringa. Penso che Magento abbia una funzione di escape predefinita. il mio codice '($ tbl_customer = getMazeTable ("customer_entity"); \t \t \t \t \t \t $ connessione = Mage :: getSingleton ('core/risorsa') \t \t \t \t \t \t \t -> getConnection ('core_read'); \t \t \t \t \t \t $ selezionare = $ connection-> selezionare() \t \t \t \t \t \t \t -> da ($ tbl_customer) \t \t \t \t \t \t \t -> dove ('e-mail =?', $ E-mail);) ' – user1463076

7

Penso che Magento utilizzi un livello di accesso ai database basato su PDO, che gestisce l'escape automaticamente a condizione di utilizzare parametri associati. Esempio da Using Magento Methods to write Insert Queries with care for SQL Injection

$write = Mage::getSingleton("core/resource")->getConnection("core_write"); 

// Concatenated with . for readability 
$query = "insert into mage_example " 
     . "(name, email, company, description, status, date) values " 
     . "(:name, :email, :company, :desc, 0, NOW())"; 

$binds = array(
    'name' => "name' or 1=1", 
    'email' => "email", 
    'company' => "company", 
    'desc' => "desc", 
); 
$write->query($query, $binds); 
+1

questo è un perfetto esempio del perché rispondere a un link non è una buona idea: il link è inattivo. – OSdave

+0

Riparato, rimuovi downvot. – siliconrockstar

+1

grazie per averlo risolto, ho rimosso il downvote – OSdave