2016-05-10 30 views
5

Ho seguente query in ColdFusion:Come trovare il numero di righe interessate dall'istruzione INSERT INTO in ColdFusion e nel database MySql?

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

voglio trovare numero di righe interessate contano. C'è un modo per trovarlo in ColdFusion?

+2

Si prega di menzionare il server di database che si sta utilizzando. Le soluzioni potrebbero differire in base ad esso. Sarebbe utile per gli altri che visitano questa pagina. – Pankaj

+0

@Pankaj Sì, certo e grazie per il suggerimento. –

risposta

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#"> 

O

È possibile apportare modifiche nelle impostazioni per consentire più istruzioni SQL withing uno cfquery. Per fare in modo che ciò accada, apportare le modifiche come indicato di seguito:

In Amministratore ColdFusion, andare al modulo di definizione di origine dati e aggiungere allowMultiQueries = true nella casella Stringa di connessione. Dopo averlo fatto, puoi passare più query separate da punto e virgola in un singolo tag CFQUERY. Assicurati di utilizzare CFQUERYPARAM per lo screening degli attacchi SQL Injection.

+0

Grazie a @tushar funziona perfettamente. –

+0

@Tushar Bello! Non lo sapevo. – Pankaj

+0

Seriamente, ho sempre pensato che l'oggetto variabile nell'attributo 'result' contenesse tutte le informazioni sull'esecuzione di quella query, ma risulta che' MySQL' si sta comportando diversamente. Risposta molto utile e creativa @Tushar – Anurag

2

Utilizzare l'attributo result e quindi accedere alla chiave recordCount del risultato.

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

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

Viene sempre restituito come risultato 1. Anche se ci sono n righe di numero interessate dall'istruzione di inserimento. –

+0

@JohnWhish, Idealmente dovrebbe funzionare ma su alcuni database no. –

+1

@SantoshDahifale Dovrebbe funzionare. Quale database stai usando? – Beginner

4

Prova questo.

<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 contiene l'elenco di ID generati, in modo che possiamo trovare quante righe sono state inserite quando usiamo listLen() funzione.

+0

Questa è la soluzione 'MySQL' @GunvantW. Ma funziona anche per l'aggiornamento? – Anurag

+0

Esiste una soluzione completa che vale la pena esaminare: http://stackoverflow.com/a/7861180/3098962 – Anurag

+0

Funziona solo quando inseriamo i record. @Anurag –