# Ruby + mysql

**URL:** <https://www.ruby-forum.com/t/ruby-mysql/115170>\
**Category:** IT\
**Created:** [September 21, 2007, 11:18am UTC](https://www.ruby-forum.com/t/ruby-mysql/115170 "2007-09-21T11:18:49Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![curiosone](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/2acd7d/32.png) [@curiosone](https://www.ruby-forum.com/u/curiosone)\
**Post date:** [September 21, 2007, 11:18am UTC](https://www.ruby-forum.com/t/ruby-mysql/115170/1 "2007-09-21T11:18:49Z")

</div>

Sono nella melma con MySql  
Voglio inserire un valore in un campo di una maschera video e voglio  
cercare se questo valore esiste in una data colonna di una tabella  
qualsiasi: quindi

“SELECT \* FROM tabella WHERE variabile = colonna\_tabella”

come faccio a dire a MySql che mi deve cercare il contenuto di  
“variabile” e non la stringa “variabile” nella colonna specificata?

Lo stesso problema si pone per il comando insert: tutti gli esempi che  
ho trovato riportano:

INSERT INTO tabella VALUES (‘valore1’,‘valore2’, …)

se valore1 e’ una variabile con un valore qualsiasi come devo fare per:  
dire a MySql che “valore1” e’ una variabile;  
di inserire nel campo del database il contenuto di "valore1 e non la  
stringa “valore1” con Ruby?

Grazie e saluti

---

<div class="post-metadata">

**Author:** ![curiosone](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/2acd7d/32.png) [@curiosone](https://www.ruby-forum.com/u/curiosone)\
**Post date:** [August 1, 2009, 11:40am UTC](https://www.ruby-forum.com/t/ruby-mysql/115170/2 "2009-08-01T11:40:07Z")

</div>

Don’t you tired of not getting answers…?

---

<div class="post-metadata">

**Author:** ![curiosone](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/2acd7d/32.png) [@curiosone](https://www.ruby-forum.com/u/curiosone)\
**Post date:** [August 1, 2009, 1:30pm UTC](https://www.ruby-forum.com/t/ruby-mysql/115170/3 "2009-08-01T13:30:51Z")

</div>

2007/9/21 Guerra A. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

> Sono nella melma con MySql  
> Voglio inserire un valore in un campo di una maschera video e voglio  
> cercare se questo valore esiste in una data colonna di una tabella  
> qualsiasi: quindi
> 
> “SELECT \* FROM tabella WHERE variabile = colonna\_tabella”
> 
> come faccio a dire a MySql che mi deve cercare il contenuto di  
> “variabile” e non la stringa “variabile” nella colonna specificata?

Ciao Antonio,

immagino che tu stia passando la stringa SQL di cui sopra direttamente  
al  
driver.

Se così fosse, ti basta costruire la stringa in questo modo:

sql = “SELECT \* FROM #{tabella} WHERE #{colonna} = #{valore}”

Dove tabella, colonna e valore sono variabili del tuo programma (il cui  
nome  
è arbitrario). Ruby sostituirà i valori per queste variabili nella stringa  
sql.

## Se valore è una stringa, assicurati di usare ‘#{valore}’ con gli apici nella stringa sql.

High-Quality Programming Screencasts: [http://ThinkCode.TV](http://ThinkCode.TV)  
Zen and the Art of Programming: [http://AntonioCangiano.com](http://AntonioCangiano.com)  
Mathematics is wonderful: [http://math-blog.com](http://math-blog.com)  
Aperiodico di resistenza informatica: [http://stacktrace.it/](http://stacktrace.it/)  
Author of “Ruby on Rails for Microsoft Developers”:  
[http://bit.ly/rorforms](http://bit.ly/rorforms)

---

<div class="post-metadata">

**Author:** ![curiosone](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/2acd7d/32.png) [@curiosone](https://www.ruby-forum.com/u/curiosone)\
**Post date:** [August 1, 2009, 1:35pm UTC](https://www.ruby-forum.com/t/ruby-mysql/115170/4 "2009-08-01T13:35:32Z")

</div>

2009/8/1 Antonio C. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

> Se valore è una stringa, assicurati di usare ‘#{valore}’ con gli apici  
> nella stringa sql.

Chiarisco ulteriormente. Se il campo corrispondente nel database si  
aspetta  
un valore testuale (ad esempio, se è stato definito come VARCHAR) allora  
ti  
servono gli apici.

## Ciao, Antonio

High-Quality Programming Screencasts: [http://ThinkCode.TV](http://ThinkCode.TV)  
Zen and the Art of Programming: [http://AntonioCangiano.com](http://AntonioCangiano.com)  
Mathematics is wonderful: [http://math-blog.com](http://math-blog.com)  
Aperiodico di resistenza informatica: [http://stacktrace.it/](http://stacktrace.it/)  
Author of “Ruby on Rails for Microsoft Developers”:  
[http://bit.ly/rorforms](http://bit.ly/rorforms)

---

<div class="post-metadata">

**Author:** ![curiosone](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/2acd7d/32.png) [@curiosone](https://www.ruby-forum.com/u/curiosone)\
**Post date:** [August 4, 2009, 9:17pm UTC](https://www.ruby-forum.com/t/ruby-mysql/115170/5 "2009-08-04T21:17:06Z")

</div>

On Sat, Aug 1, 2009 at 1:35 PM, Antonio C.[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
wrote:

> 2009/8/1 Antonio C. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)
> 
> > Se valore è una stringa, assicurati di usare ‘#{valore}’ con gli apici  
> > nella stringa sql.
> 
> Chiarisco ulteriormente. Se il campo corrispondente nel database si aspetta  
> un valore testuale (ad esempio, se è stato definito come VARCHAR) allora ti  
> servono gli apici.

Sì ma occhio che la stringa che vai a incollare dentro la tua query  
non contenga a sua volta degli apici!!! Altrimenti rischi che la tua  
query fallisca, o anche peggio (è una maniera di “sabotare” le  
applicazioni: [SQL injection - Wikipedia](http://en.wikipedia.org/wiki/SQL_injection)).

Ciao,

Matteo
