2017-01-12 2 views
0

Ich möchte etwa 100 Update/Delete Dynamische Abfragen mit PHP durchgeführt und an MySQL Stored Procedure gesendet.Mehrere dynamische Abfragen in MySQL

Zur Zeit kann ich mit diesem Code wie

CREATE PROCEDURE `updateBill`(IN `queryIs` VARCHAR(10000)) 
BEGIN 
    SET @t1 = queryIs; 
    PREPARE stmt3 FROM @t1; 
    EXECUTE stmt3; 
    DEALLOCATE PREPARE stmt3; 
END 

Einzel Dynamische Abfrage in Stored Procedure ausführen Dies kann aber nur einzelne Abfrage mit ; beendet auszuführen. Aber ich habe über 100 dynamische Abfragen und wollen, dass sie auszuführen wie

update abc set a=1, b=0 where c=5; 
update abc set a=7, b=3 where c=6; 
delete from abc where c = 3; 
update abc set a=9, b=2 where c=8; 
update abc set a=2, b=1 where c=12; 
delete from abc where c = 10; 

alle obigen Abfragen sind PHP Daten von Client-Daten gesendet hat. Ich möchte nicht schnell eine Verbindung mit dem Server erstellen und obige Abfragen nacheinander ausführen, aber ich möchte nur obige Abfragen wie bei einer einzelnen Zeichenfolge im Parameter für gespeicherte Prozeduren senden und dann dynamische Abfragen daraus erstellen und dann alle oben genannten Schritte ausführen.

+0

Sie können natürlich den Parameter bei z. ';' (oder fügen Sie einen zweiten Parameter hinzu, der die Längen enthält, wird es einfacher, zwischen einer Zeichenkette zu unterscheiden, die ein ''; '' und das tatsächliche Trennzeichen enthält) und sie in einer Schleife ausführen. Auf der anderen Seite gibt es absolut keinen Grund dafür. Öffnen Sie einfach eine Verbindung und führen Sie die Abfragen einzeln (oder vorbereitet) von PHP aus. Es ist tatsächlich schneller als dynamische sql, kann mehr tun und wird sonst genau dasselbe tun. (Dafür gibt es eine API. Wenn Sie es auf Ihre Art optimieren könnten, wäre es bereits implementiert worden). – Solarflare

+0

Und Sie könnten auch eine Multiquery in PHP verwenden, wenn Sie es unbedingt sofort senden möchten, also einen Abfrageaufruf mit Ihrer ganzen Zeichenfolge, nicht über die gespeicherte Prozedur. Es ist nicht schneller, aber könnte es einfacher für Sie machen (ich bin nicht genau sicher, was der Grund hinter Ihrer Idee ist). – Solarflare

Antwort

0

Es war nicht wirklich 100% klar, was Ihre Absicht ist aber es scheint, dass Sie String-Verarbeitung in Ihrem Verfahren zu tun, die eine Menge Arbeit ist, wenn Sie jeden möglichen Fall vorhersagen wollen.