Ошибка PHP при использовании связанных с MySQL функций

0

У меня есть еще один script, что я не могу понять, что с ним не так. Я попытался использовать

error_reporting(E_ALL);

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

<?php
error_reporting(E_ALL);
$username = $_POST['user'];
$email = $_POST['email'];
$password = md5($_POST['pass']);
$currname = $_COOKIE['ZBrownTechnologyCorporationBeta'];

$con = mysql_connect("HOST", "USER", "PASS");
if (!$con) {
  die('Unable to connect: '.mysql_error());
}

mysql_select_database("zach_blogin", $con);

if(empty($password)) {
  $nothing = "nothing";
} else {
  mysql_query("UPDATE members SET password = '$password' WHERE username = '$currname'");
}


mysql_query("UPDATE members SET Email = '$email' WHERE username = '$currname'");

if($username==$currname) {
  $nothing = "nothing";
} else {
  $query = ("SELECT username from members WHERE username = '$username'");
  $result = mysql_query($query);
  if (!$result) {
    header("Location: " . $_SERVER['HTTP_HOST'] . "/public_html/Beta/account.php?invalid");
    exit;
  }
}
mysql_query("UPDATE members SET username = '$username' WHERE username = '$currname'");
header("Location: ". $_SERVER['HTTP_HOST'] . "/public_html/Beta/main_login.php?update");
?>

Я просмотрел этот код некоторое время. Кажется, не получается заставить отчет об ошибках работать, поэтому я снова. Спасибо всем, кто помог, и кто поможет!


По запросу @Klinky:

При попытке использовать эту страницу (с именем myinfo.php) в Opera отображается сообщение по умолчанию, указывающее, что оно не может найти страницу и/или сервер. В Internet Explorer 8 отображается 500 Внутренняя ошибка сервера.

Вот спецификации сервера: ОС: Linux HTTP: Apache v2.0.63 PHP: 5.3.3 MySQL: 5.0.91-community


Я просмотрел журналы, и это сообщение об ошибке:

[Sat Sep 25 21:34:08 2010] [error] [client 68.52.52.190] PHP Fatal error:  Call to undefined function mysql_select_database() in /home/zach/public_html/Beta/myinfo.php on line 12, referer: http://zbrowntechnology.com/Beta/account.php

Единственное, база данных, которую я пытался выбрать, существует!

  • 0
    вам также нужно вызвать ini_set('display_errors', 1); если вы хотите, чтобы ошибки выводились напрямую ... в противном случае они регистрируются только в том журнале ошибок ... как правило, веб-сервер error__log по умолчанию. Или вы можете настроить их на php.ini, но я бы не рекомендовал этого. Также ваша функция mysel не собирается выдавать ошибку напрямую ... вам нужно использовать mysql_error() чтобы взглянуть на них.
  • 0
    Вроде как грустное лицо и PHP в одном предложении. Похоже, я пишу код в PHP.
Показать ещё 2 комментария
Теги:

3 ответа

4
Лучший ответ

Нет встроенного имени функции mysql_select_database. Думаю, вы имели в виду mysql_select_db

Изменить

mysql_select_database("zach_blogin", $con);

к

mysql_select_db("zach_blogin", $con);
  • 0
    ДУХ! Попробовал это, и это сработало! Благодарю. +1 для вас!
  • 1
    @ Zachary - я предлагаю вам начать использовать настоящую среду IDE, такую как NetBeans. Вы могли бы избавить себя от многих проблем здесь. Любая современная IDE пометит эту ошибку, как только вы ее введете.
6

Все ваши запросы UPDATE отсутствуют имя таблицы:

UPDATE TABLE_NAME SET .....
          ^^^^^
         missing

Я предлагаю, каждый раз, когда вы вызываете mysql_query(), проверяете его возвращаемое значение. Если его false, выполнение запроса завершилось неудачно, и вы можете получить причину сбоя, вызвав mysql_error()

$result = mysql_query($query);
if (!$result) {
    die('Invalid query: ' . mysql_error());
}

Дополнительные ошибки:

Вам нужно заключить строки в одинарные кавычки в запросе:

mysql_query("UPDATE members SET password = '$password'....
                                           ^         ^
                                             missing

Сделайте это везде, где вы используете строку в запросе.

  • 0
    Спасибо, я исправил это ... но это все еще не работает. Есть еще идеи? (Я также исправил ошибку во фрагменте выше.)
  • 2
    but it still doesn't work - Что именно не работает? Вы получаете какую-либо ошибку? Вы проверяли возвращаемое значение всех вызовов mysql_query ? как предлагается в ответе?
Показать ещё 5 комментариев
0

Попробуйте установить полный URL-адрес для фрагмента:

header("Location: account.php?invalid");

HTTP spec говорит, что вы должны использовать полный URL-адрес при выполнении перенаправления. Хотя многие браузеры поддерживают относительный путь. Попробуйте:

header('Location: ' . $_SERVER['HTTP_HOST'] . '/project-path/account.php?invalid');

REPLACE/project-path/с полным путем, где находятся ваши .php файлы.

  • 0
    Пробовал, та же проблема.
  • 0
    Ошибка 404 может указывать на то, что сервер не может найти файл, на который вы перенаправляете или пытаетесь его запустить, поэтому я бы проверил журналы сервера и выяснил, есть ли более подробные сведения о том, что он не может найти.
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню