2016-05-10 19 views
5

Mam następujące kwerendy w ColdFusion:Jak znaleźć liczbę wierszy, których dotyczy instrukcja INSERT INTO w ColdFusion i MySql Database?

<cfquery name="test" datasource="test"> 
    INSERT INTO test (id,name) VALUES (1,"santy"),(2,"raj"),(3,"nil") 
</cfquery> 

Chcę znaleźć liczbę wierszy liczyć. Czy jest jakiś sposób, aby znaleźć to w ColdFusion?

+2

Proszę wspomnieć o serwerze bazy danych, z którego korzystasz. Rozwiązania mogą się różnić w zależności od tego. Byłoby to pomocne dla osób odwiedzających tę stronę. – Pankaj

+0

@Pankaj Tak, jasne i dzięki za sugestię. –

Odpowiedz

7
<cftransaction> 
    <cfquery name="test" datasource="test"> 
     INSERT INTO test (id,name) VALUES (1,"santy"),(2,"raj"),(3,"nil") 
    </cfquery> 
    <cfquery name="test1" datasource="test"> 
     SELECT ROW_COUNT() AS numberOfRowsAffected 
    </cfquery> 
</cftransaction> 
<cfdump var="#test1.numberOfRowsAffected#"> 

Albo

Można dokonać zmian w ustawieniach, aby umożliwić wielu instrukcji SQL withing jeden cfquery. Aby to się stało, wprowadź zmiany w sposób opisany poniżej:

W ColdFusion Admin przejdź do formularza definicji źródła danych i dodaj allowMultiQueries = true do pola Connection String. Gdy to zrobisz, możesz przekazać wiele zapytań rozdzielonych średnikami w jednym tagu CFQUERY. Po prostu upewnij się, że używasz CFQUERYPARAM do wyświetlenia ataków iniekcyjnych SQL.

+0

Dzięki @tushar działa ona doskonale. –

+0

@Tushar Nice one! Nie wiedziałem o tym. – Pankaj

+0

Poważnie, zawsze uważałem, że obiekt zmienny w atrybucie 'wynik' zawiera wszystkie informacje o wykonaniu tego zapytania, ale się okazuje, że' MySQL' zachowuje się inaczej. Bardzo pomocna i kreatywna odpowiedź @Tushar – Anurag

2

Użyj atrybutu result, a następnie przejdź do klucza recordCount wyniku.

<cfquery result="myResult" datasource="test"> 
    INSERT INTO test (id,name) VALUES (1,"santy"),(2,"raj"),(3,"nil") 
</cfquery> 

<cfdump var="#myResult.recordCount#"> 
+1

Zawsze podaje wynik jako 1. Nawet jeśli n liczba wierszy zależy od instrukcji wstawiania. –

+0

@JohnWhish, Idealnie powinno to działać, ale w niektórych bazach nie. –

+1

@SantoshDahifale Powinno działać. Z której bazy danych korzystasz? – Beginner

4

Wypróbuj tę.

<cfquery datasource="test" result="myResult"> 
    INSERT INTO test (id,name) VALUES (1,"santy"),(2,"raj"),(3,"nil") 
</cfquery> 
<cfset getNumberOfRecords = listLen(#myResult.generated_key#)> 
<cfdump var="#getNumberOfRecords#"> 

myResult.generated_key zawiera listę wygenerowanych identyfikatorów, więc możemy znaleźć ile wierszy zostały włożone gdy używamy listLen() funkcję.

+0

To jest rozwiązanie 'MySQL' @GunvantW. Ale czy działa również w przypadku aktualizacji? – Anurag

+0

Istnieje kompletne rozwiązanie, na które warto zwrócić uwagę: http://stackoverflow.com/a/7861180/3098962 – Anurag

+0

To będzie działać tylko wtedy, gdy wstawimy rekordy. @Anurag –

Powiązane problemy