База данных не найдена!! ошибка mysql

#php #mysql #sql

#php #mysql #sql

Вопрос:

      //require_once("../StoredProcedure/connect.php");
  $conn=mysql_connect("localhost","root","") or die(mysql_error);
  mysql_select_db("politicalforum",$conn); 

 function updateThread($threadID, $content) 
 {
     mysql_query("UPDATE threads
                  SET content='$content'  
                  WHERE thread_id=$threadID") ;
    // $res = mysql_query($sql) or trigger_error(mysql_error().$sql);
     mysql_close();
 }
  

Я получаю это каждый раз..что я делаю не так?

База данных не выбрана.

Я вызываю эту функцию из внешнего файла…вот так..

 if(isset($_GET['threadID']) amp;amp; isset($_POST["reply"]) amp;amp; isset($_POST['textareas']))
   {

        updateThread($_GET['threadID'], $_POST['textareas']); 

       $postValid=TRUE;
   }
  

Комментарии:

1. Выбор базы данных должен происходить изнутри функции. Возможно, вы захотите рассмотреть возможность создания класса.

2. Вы проверили результат mysql_select_db ? Что это было?

3. @Truth: Тогда почему это?

4. Да, скорее всего, ваш select_db завершается с ошибкой

5. эта функция вызывается дважды? второй вызов не будет работать, поскольку первый прервал соединение с. mysql_close()

Ответ №1:

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

В этом случае вам нужно передать соединение в mysql_query функцию внутри updateThread . С архитектурной точки зрения есть два способа сделать это:

1) Откройте и закройте соединение внутри вашей updateThread функции:

 function updateThread($threadID, $content) 
{
   $conn=mysql_connect("localhost","root","") or die(mysql_error);
   mysql_select_db("politicalforum",$conn); 
   mysql_query("UPDATE threads
                SET content='$content'  
                WHERE thread_id=$threadID", $conn) ;
   mysql_close($conn);
   $conn = null;
}
  

2) Передайте соединение в качестве переменной в updateThread, на случай, если вы хотите использовать то же соединение в других функциях. PHP автоматически закроет и удалит ваше соединение с MySQL после завершения работы скрипта:

 function updateThread($threadID, $content, $conn) 
{
   mysql_query("UPDATE threads
                SET content='$content'  
                WHERE thread_id=$threadID", $conn) ;
}
  

Комментарии:

1. 1 для вашего 2-го решения. Я не думаю, что разумно постоянно открывать и закрывать соединения, поэтому я бы никогда не стал делать (1).

2. В этом случае, безусловно, было бы лучше создать соединение один раз, а затем передать его в качестве параметра