URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 3603
[ Назад ]

Исходное сообщение
"mysql ни чего понять немогу. Что за ошибка ?"

Отправлено MaximZaikin , 26-Сен-05 23:01 
Добрый день. Проблемма такая
Код
    $descr=0;
    echo("До ".$descr);
    $descr = @mysql_connect("my_site.com","user","pass") or exit();
    echo("<br> после коннекта ".$descr);
    mysql_select_db("child") or exit;
    $result_id=0;
    echo("<br> result До ".$result_id);
    $result_id = mysql_query("SELECT COUNT(*) FROM child");
    echo("<br>result после ".$result_id);
    $row= mysql_fetch_row($result_id);

Дамп

До 0
после коннекта Resource id #5
result До 0
result после
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in C:\Program Files\nusphere\phped\Projects\de-bill\index.php on line 23

В чем тут дело ?

К слову сказать, хочу еще спросить, как создать аккаунт для пользователя.
Скажу сразу что пользователь реально есть с консоли я захожу в mysql, на него сделанны такие привелегии GRANT ALL ON bd.* TO 'user'@'%';
Пароля на этой учетке вобще я ни делал, т.к это тестовый вариант.
В чем тут проблема ? Кстати есть такой нюанс. С консоли войдя под этим пользователем набрав use my_db; выходит ошибка ERROR 1044: Access denied for user: '@localhost' to database 'my_db'.
Вот впринципе вся проблема. Как с ней бороться я незнаю.
Заранее благодарен Заикин Максим Викторович.


Содержание

Сообщения в этом обсуждении
"mysql ни чего понять немогу. Что за ошибка ?"
Отправлено MeLLowD , 28-Сен-05 02:27 
Для начала, вдумчиво читаем http://www.phpclub.ru/detail/article/2000-11-21

"mysql ни чего понять немогу. Что за ошибка ?"
Отправлено MaximZaikin , 28-Сен-05 17:19 
>Для начала, вдумчиво читаем http://www.phpclub.ru/detail/article/2000-11-21

Аж бесит. Ты сам вдумчиво пачитай этц фигню што ты мне дал, патом мой вапрос и код проанализируй. Ты это дай детям из дец сада. Я спросил в чем проблема, а не что мне прочитать. Что касается литературы это фуфельная статья, лично я использую Поль Дюбуа - mysql второое издание, и еще пару книг конкретно по пхп. Ламо ! Иногда лучше молчать чем говорить. Лучшип ты ничиво ниписал, я просто потратил свое время на бесполезное чтение того что и бес этава реса знал.


"mysql ни чего понять немогу. Что за ошибка ?"
Отправлено MeLLowD , 29-Сен-05 00:17 
Сынок, сначала поменяй подгузники, потом научиcь орфографии и только после этого переходи к программированию, чтению умных книжек, а заодно научись общаться с людьми, к которым ты пришел за помощью. Твой код - бред сивой кобылы, мне все равно какие ты читаешь книжки. В голове, видимо, ничего не откладывается. Судя по всему, ты не умеешь элементарно отлаживать код. Ответь хотя бы на пару вопросов, даже не мне, а сам себе:
1. Зачем ты делаешь echo("<br> после коннекта ".$descr);?
2. Зачем ты используешь оператор @ перед mysql_connect?
3. Тебе известна функция mysql_error?
4. Ты проверил свой запрос в консоли mysql или phpMyAdmin?

"mysql ни чего понять немогу. Что за ошибка ?"
Отправлено romiro , 02-Окт-05 02:07 
Вынужден признать, люди правы в чём-то, давая Вам ответы Выше... займитесь нормально отладкой. Я же хочу высказаться по поводу прав доступа. Дело в том, что в MySQL есть разница между тем локальный вы пользователь или пришли из вне (из сети). У вас выставлены права на пользователя из сети
GRANT ALL ON bd.* TO 'user'@'%';
Знак процентов на это и указывает, если Вы сделаете тоже самое, но со значением localhost
GRANT ALL ON db.* TO 'user@localhost';
то у Вас всё заработает. Кстати, попробуйте сконнектится со своей базой в текущем состоянии не используя localhost, а пропишите IP машины - тоже должно срабоать.

По поводу Вашего скрипта - проведите нормальную отладку, вот приблизительный пример кода
$db_name = "child";
$con = @mysql_connect("my_site.com","user","pass") or die("Can not connect to db ".mysql_error());
  mysql_select_db($db_name) or die("Can not connect to db ".mysql_error());
  $res = mysql_query("SELECT COUNT(*) FROM child");
  if($res){
   $row = mysql_fetch_row($result_id);
   if(!$row){
     echo mysql_error();
     exit;
   }
  }

Я не претендую на то что этот код верен во всех отношениях, но я бы начал именно так.


"mysql ни чего понять немогу. Что за ошибка ?"
Отправлено Simps , 03-Окт-05 10:15 
Я себе давно уже сделал такой класс (в какой то книжке нашел) и юзаю его ... Намного проще жить =)

Что то типа
$db = new DB($host, $user, $password, $database);
if (!$db->open()) die($db->error());
if (!$db->query("
SELECT * FROM `table`
")) die($db->error());
if ($db->numRows() == 0 ) {
...
} else {
...
}

Ну и так далее ...

<?
class DB
{
    /* Установки соединения */
    var $host = '';
    var $user = '';
    var $password = '';
    var $database = '';
    var $persistent = false;
    /* Идентификатор соединения */
    var $conn = NULL;
    /* Результат поиска */
    var $result = false;
    function DB($host, $user, $password, $database, $persistent = false)
    {
        $this->host = $host;
        $this->user = $user;
        $this->password = $password;
        $this->database = $database;
        $this->persistent = $persistent;
    }
    function open()
    {
      /* Выбор нужной функции */
    if ($this->persistent) {
        $func = 'mysql_pconnect';
    } else {
      $func = 'mysql_connect';
    }
    /* Соединение с сервером */
    $this->conn = $func($this->host, $this->user, $this->password);
    if (!$this->conn) {
        return false;
        }
    /* Выбор нужной базы */
    if (@!mysql_select_db($this->database, $this->conn)) {
        return false;
        }
    return true;
  }

    function close()
  {
        /* Закрытие соединения */
      return(@mysql_close($this->conn));
  }

  function error()
  {
        /* Возврат ошибки */
      return (mysql_error());
  }

  function query($sql)
  {
        /* Запрос к базе */
        $this->result = @mysql_query($sql, $this->conn);
    return($this->result != false);
  }

  function affectedRows()
  {
    /* Затронутые столбцы */
      return(@mysql_affected_rows($this->conn));
  }

  function numRows()
  {
    /* Количество столбцов */
      return(@mysql_num_rows($this->result));
  }

    function fetchObject()
  {
    /* Вернуть обьект */
      return(@mysql_fetch_object($this->result, MYSQL_ASSOC));
  }

  function fetchArray()
  {
    /* Вернуть массив */
      return(@mysql_fetch_array($this->result));
  }

  function fetchAssoc()
  {
      /* Возвращает ассоциативный массив */
    return(@mysql_fetch_assoc($this->result));
  }

    function InsertId ()
    {
        return(@mysql_insert_id($this->conn));
    }
    function freeResult()
  {
    /* Освободить ресурс */
      return(@mysql_free_result($this->result));
  }
}
?>