Apostrofy v MySQL příkazech

Apostrofy v MySQL příkazech
« kdy: 25. 10. 2014, 20:36:43 »
Zdravím a mám dotaz který se bude asi někomu zdát jednoduchý, ale já to nějak nemůžu dogooglit. Zajímalo by mě jaké je pravidlo pro psaní apostrofů v MySQL příkazech viz níže. Tak jak to je skript funguje? U dat$user (což utvoří datt databázi) nejsou a naproti tomu u u '$password' být musí. Dále $user@'%' funguje stejně jako '$user'@'%' a $user@% nefunguje.

Existuje nějaké pravidlo nebo zvyklost jak by to mělo správně vypadat???? Moc dík protože fakt nevidim.

Kód: [Vybrat]
#!/bin/bash

user="t"
password="xxx"

mysql -uroot -pheslo -e"CREATE DATABASE IF NOT EXISTS dat$user;CREATE USER $user@'%' IDENTIFIED BY '$password';"
mysql -uroot -pheslo -e"GRANT ALL PRIVILEGES ON dat$user.* TO $user@'%';"


Kit

Re:Apostrofy v MySQL příkazech
« Odpověď #1 kdy: 25. 10. 2014, 20:50:12 »
Tyhle problémy vznikají vždy, když se kombinují dva skriptovací jazyky a oba používají uvozovky a apostrofy. V daném případě Bash a MySQL.

String v MySQL musí být v apostrofech. Proto je kolem proměnné $password. To celé se však nachází v uvozovkách, proměnnou $password expanduje už Bash. Proto se do výsledného SQL dotazu vpašuje ...IDENTIFIED BY 'heslo';

Kdybys tam nedal ty apostrofy, MySQL by slovo "heslo" považovalo za název proměnné.