Tırnak içinde MySql tablo adları ve alan adları

2 Cevap php

Ben otomatik olarak oluşturulan ve bu tırnak içindeki tüm tablo adları ve alan adlarını koyar PHP kodu bir grup var. Zekâ için:

INSERT INTO "t_ML_u_Visitor"("c_u_ID") VALUES ...

Kod ben bir şekilde bu sözdizimi kabul MySql almak yerine tırnak soyarak bir işlem sonrası, için oluşturulan kod tabi eğer çok tercih olurdu Otomatik Oluşturulmuş beri.

Ben denedim:

$conn=$mysqli = new mysqli("localhost", "root", "", "myDB");
$R=$conn->options(MYSQLI_INIT_COMMAND, "SET SQL_MODE = 'ANSI'"); 

Ama boşuna.

Yardım?

2 Cevap

Normal alıntı karakteri arka alıntı - örneğin

create table `quoted`( `v` varchar(10) );

Eğer otomatik oluşturulmuş sorguları uygun kullanın alıntı karakterini değiştirebilir miyim?

EDIT: Ben sadece ANSI modunu denedim, ve ne istediğinizi yapar:

set @session sql_mode = ANSI;
create table "world"( "v" varchar(10));

Sorun daha sonra çift tırnak artık dizeler alıntı kullanılabileceğini olur.

MySQL uses backticks (`) to escape. Your query then looks like this:

INSERT INTO `t_ML_u_Visitor` (`c_u_ID`) VALUES (...)

: PHP ve (gördüğünüz gibi) mysqli kullanıyorsanız böyle mysqli'nin fonksiyonu real_escape_string () kullanabilirsiniz

$conn = new mysqli("localhost", "root", "", "myDB");
$query = "INSERT INTO t_ML_u_Visitor (c_u_ID) VALUES (...)";
$escaped = $conn->real_escape_string($query);
$result = $conn->query($escaped);

Ayrıca bakınız: http://de2.php.net/manual/en/mysqli.real-escape-string.php