Имена таблиц MySql и имена полей в кавычках - PullRequest
1 голос
/ 05 марта 2010

У меня есть куча PHP-кода, который генерируется автоматически, и он помещает все имена таблиц и полей в кавычки. Для остроумия:

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

Поскольку этот код генерируется автоматически, было бы гораздо лучше, если бы я мог каким-то образом заставить MySql принять этот синтаксис, а не подвергать сгенерированный код постобработке, которая удаляет кавычки.

Я пробовал это:

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

Но безрезультатно.

Помощь

Ответы [ 2 ]

3 голосов
/ 05 марта 2010

Обычный символ кавычки - это обратная кавычка - например,

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

Можете ли вы изменить символ кавычки, который будут использоваться вашими автоматически сгенерированными запросами?

РЕДАКТИРОВАТЬ: Я только что попробовал режим ANSI, и он делает то, что вы хотите:

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

Тогда возникает проблема, заключающаяся в том, что двойные кавычки больше не могут использоваться для цитирования буквенных строк.

0 голосов
/ 05 марта 2010

MySQL использует backticks (`) для выхода. Ваш запрос выглядит так:

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

Если вы используете PHP и Mysqli (как я вижу), вы можете использовать функцию real_escape_string () mysqli следующим образом:

$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);

Смотри также: http://de2.php.net/manual/en/mysqli.real-escape-string.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...