mysql_fetch_array (): предоставленный аргумент не является допустимым MySQL - PullRequest
0 голосов
/ 22 июня 2010
Warning:mysql_fetch_array(): supplied argument is not a valid MySQL result resource in **/home/davzyco1/public_html/notes/functions.php** on line 43

была ошибка, которую я получил, когда использую приведенный ниже класс, хотя класс работает ОТЛИЧНО с моим старым веб-хостом.Вот мои новые данные php хостов: http://davzy.com/notes/php.php

    class mysqlDb
{
 public $con;
 public $debug;

 function __construct($host,$username,$password,$database)
 {
  $this->con = mysql_connect($host,$username,$password);
  if (!$this->con)
    {
     die('Could not connect: ' . mysql_error());
    }

  mysql_select_db($database, $this->con);
 }

 function kill()
 {
  mysql_close($this->con);
 }

 function debugOn()
 {
 $this->debug = true;
 }

 function debugOff()
 {
  $this->debug = false;
 }

 function select($query,&$array)
 {
  $c = 0;
  $result = mysql_query("SELECT ".$query);
  if($this->debug == true)
    echo "SELECT ".$query;
  while($row = mysql_fetch_array($result))
    {
   foreach($row as $id => $value)
   {
    $array[$c][$id] = $value;

   }
   $c++;
    }
 }

 function update($update, $where,$array)
 {
  foreach($array as $id => $value)
  {
   mysql_query("UPDATE {$update} SET {$id} = '{$value}'
WHERE {$where}");
   if($this->debug == true)
     echo "UPDATE {$update} SET {$id} = '{$value}'
WHERE {$where}<br><br>";
  }
 }

 function updateModern($update, $where,$array)
 {
  foreach($array as $id => $value)
  {
   mysql_query("UPDATE {$update} SET `{$id}` = '{$value}'
WHERE {$where}");
   if($this->debug == true)
     echo "UPDATE {$update} SET {$id} = '{$value}'
WHERE {$where}<br>";
  }
 }

 function delete($t, $w)
 {
  mysql_query("DELETE FROM `{$t}` WHERE {$w}");
  if($this->debug == true)
     echo "DELETE FROM `{$t}` WHERE {$w}<br><br>";
 }

 function insert($where, $array)
 {
  $sql = "INSERT INTO `{$where}` (";
  $sql2 = " VALUES (";
  foreach($array as $id => $value){
   $sql .= "`{$id}`, ";
   $sql2 .= "'{$value}', ";
  }
  mysql_query(str_replace(', )',')',$sql.")") . str_replace(', )',')',$sql2.");"));
  if($this->debug == true)
    echo str_replace(', )',')',$sql.")") . str_replace(', )',')',$sql2.");")."<br><br>";
 }
}

Ответы [ 3 ]

2 голосов
/ 22 июня 2010

Это потому, что mysql_query() вернет FALSE, если произошла ошибка, вместо возврата ресурса результата. Вы можете проверить ошибку, вызвав mysql_error(), как показано здесь:

function select($query,&$array)
{
 $c = 0;
 $result = mysql_query("SELECT ".$query);
 if($this->debug == true)
   echo "SELECT ".$query;
 if (!$result) {
  // an error occured, let's see what it was
  die(mysql_error());
 }
 while($row = mysql_fetch_array($result))
   {
  foreach($row as $id => $value)
  {
   $array[$c][$id] = $value;

 }
  $c++;
   }
}

На основании сообщения об ошибке вы можете узнать, в чем заключается настоящая проблема.

0 голосов
/ 22 июня 2010

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

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

0 голосов
/ 22 июня 2010

Вы должны действительно проверить, не является ли $result ложным, прежде чем использовать его с mysql_fetch_array.Полученная вами ошибка свидетельствует о том, что сам запрос не выполнен.

Вы сконфигурировали базу данных для нового хоста?(все ли таблицы существуют?)

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