php - create - CDb Conexión y llaves
yii2 where (1)
Lo siento, me acabo de dar cuenta de lo que dice tu actualización.
si uso esta configuración
''db''=>array( ''connectionString'' => ''...'', ''emulatePrepare'' => ..., ''username'' => ''...'', ''password'' => ''...'', ''charset'' => ''...'', ''tablePrefix'' => '''' ),
preste atención a la tabla vacíaPrefix: todo funciona bien.
Sí, por supuesto que sí: has definido tablePrefix
como una cadena vacía (y, como ya señalé , los prefijos de cadenas vacías son compatibles desde la v.1.1.6).
Al quitar esta clave, aparece el problema descrito anteriormente. Pero no necesito el prefijo de la tabla. Solo quiero usar un componente que pueda funcionar con prefijos, no solo en mi aplicación.
Si no define tablePrefix
, entonces compararlo contra null
será verdadero (y como también señalé antes, CDbCommand::setText()
reemplaza prefijos no nulos ):
if($this->_connection->tablePrefix!==null && $value!='''')
$this->_text=preg_replace(''/{{(.*?)}}/'',$this->_connection->tablePrefix.''/1'',$value);
Por lo tanto, debe reemplazar las llaves o establecer explícitamente tablePrefix
para que sea la cadena vacía. Si no tiene control sobre el archivo de configuración, pero quiere asegurarse de que tablePrefix
esté configurado, puede anularlo manualmente:
if (!isset($connection->tablePrefix)) $connection->tablePrefix = '''';
Haz un pequeño componente para mi aplicación Yii. Código
$connection = Yii::app()->getComponent(''db'');
$sql = ''SELECT * FROM {{settings}}'';
$command = $connection->createCommand($sql);
plantea error
SQLSTATE [42000]: error de sintaxis o violación de acceso: 1064 Tiene un error en su sintaxis SQL; revise el manual que corresponde a su versión del servidor MySQL para la sintaxis correcta para usar cerca de ''{settings}}'' en la línea 1. La instrucción SQL ejecutada fue: SELECT * FROM {{settings}}
Dime que salió mal. No puedo usar llaves para escapar del nombre de la tabla?
Gracias
ACTUALIZAR:
Parece que esto es un error de Yii Query Bulduer.
si uso esta configuración
''db''=>array(
''connectionString'' => ''...'',
''emulatePrepare'' => ...,
''username'' => ''...'',
''password'' => ''...'',
''charset'' => ''...'',
''tablePrefix'' => ''''
),
preste atención a la tabla vacíaPrefix: todo funciona bien.
Al quitar esta clave, aparece el problema descrito anteriormente. Pero no necesito el prefijo de la tabla. Solo quiero usar un componente que pueda funcionar con prefijos, no solo en mi aplicación.