#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. В этом случае, безусловно, было бы лучше создать соединение один раз, а затем передать его в качестве параметра