-1

mysql_real_escape_string не работает в cakephp. Я получаю ошибку, как показано ниже. mysql_real_escape_string(): Доступ запрещен для пользователя 'корень' @ 'локальный' (не используя пароль: NO) [APP/Controller/add.php, строка 123] соединение базы данных:mysql_real_escape_string не работает в cakephp

<?php 

    class DATABASE_CONFIG { 

     public $default = array(
      'datasource' => 'Database/Mysql', 
      'persistent' => false, 
      'host' => 'localhost', 
      'login' => 'xyz', 
      'password' => 'password', 
      'database' => 'xyz', 
      'prefix' => '', 
      //'encoding' => 'utf8', 
     ); 

     public $test = array(
      'datasource' => 'Database/Mysql', 
      'persistent' => false, 
      'host' => 'localhost', 
      'login' => 'xyz', 
      'password' => 'password', 
      'database' => 'xyz', 
      'prefix' => '', 
      //'encoding' => 'utf8', 
     ); 
    } 
    ?> 




<?php 
      $price1=implode("'~'",array_map('mysql_real_escape_string',$this->request->data['iupdate']['price'])); 
    ?> 

локальный его работает нормально, но на сервере, получившем ошибку.

+0

нет кода -> нет ответа – n00dl3

+0

$ name1 = implode ("'~'", ($ this-> request-> data ['update'] ['name'])); –

+0

нам также нужен код о вашем подключении к db. – n00dl3

ответ

2

Я не знаю торт PHP, но ИМХО, вы просто не можете использовать mysql_real_escape_string, потому что:

  • во-первых, это осуждается.

    Это расширение устарело от PHP 5.5.0 и будет удалено в будущем. Вместо этого следует использовать расширение MySQLi или PDO_MySQL.

  • , во-вторых, в соответствии с php doc:

    Соединение MySQL. Если идентификатор ссылки не указан, предполагается последняя ссылка, открытая mysql_connect(). Если такой ссылки не обнаружено, она попытается создать такую, как если бы mysql_connect() был вызван без аргументов.

Итак, вы пытаетесь подключиться к серверу с помощью производственного значения, установленные в php.ini и, конечно, вы не можете соединиться с привилегиями суперпользователя по соображениям безопасности.

Как я уже говорил: я не знаю, CakePHP, но я довольно уверен, есть функция, чтобы избежать строки или -better- строки автоматически экранируются с помощью PDO подготовить запрос

+1

CakePHP имеет ORM, который полностью позаботится об этом. Я даже не знаю, почему он пытается использовать эту функцию, это полностью противоречит идее почти всех фреймворков, которые поставляются с ORM или другим слоем абстракции DB. – burzum

+0

@burzum Есть ли какой-либо эквивалент mysql_real_escape_string, который будет использоваться в CakePHP, мне нужно отфильтровать данные, чтобы их можно было передать вперед в запрос на завивание? Я использую версию 3.1, я думаю, придется использовать библиотеку Sanitize. –

+0

Прочтите руководство по php о mysql_real_escape_string и Google для этого имени функции. Ты * лет * позади, он устарел и больше не должен использоваться. – burzum

1

Если вы обнаружили это во время установки cakephp 2.0 и более, а затем замените 'login' => 'xyz', с 'username' => 'xyz'.

Простой трюк решает все это.

Смежные вопросы