PHP, похоже, отказывается подключаться к MySQL - PullRequest
0 голосов
/ 11 декабря 2011
<?php

function redirect_to_index_with_error(){
    echo '<meta http-equiv="refresh" content="0;url=index.php">';
}

function go_to_home(){
    echo '<meta http-equiv="refresh" content="0;url=home.php">';
}

$email = mysql_real_escape_string($_POST['username']); echo $email;
$pwd = mysql_real_escape_string($_POST['password']);
echo $pwd;
$query = "SELECT * FROM users WHERE email='$email' AND password=MD5('$pwd')";
echo "query variable created.";

mysql_connect("localhost","root","") or die(mysql_error());
echo "connected."; //nothing

mysql_select_db("mcp") or die(mysql_error());

$results = mysql_query($query) or die(mysql_error());

if(mysql_num_rows($results) == 0){
    redirect_to_index_with_error();
    exit();
}

$userID = null;
$name = null;
$school = null;
$mod = null;

while($user = mysql_fetch_array($results)){
    $userID = $user['ID'];
    $name = $user['Name'];
    $school = $user['School'];
    if($user['Mod'] == '1')
        $mod = true;
    else
        $mod = false;

}
if(!isset($_SESSION))
    session_start();

//set session variables
$_SESSION["userID"] = $userID;
$_SESSION["name"] = $name;
$_SESSION["school"] = $school;
$_SESSION["mod?"] = $mod;

go_to_home();
exit();
?>

PHP выводит все до тех пор, пока "не подключится". Это даже не показывает ошибку MySQL. У меня этот код работал безупречно на Windows с WAMP, но не на Mac с MAMP. Я проверил, что серверы работают, поэтому я не могу сказать, в чем проблема. Я использую PHP 5.3.6.

Ответы [ 4 ]

1 голос
/ 11 декабря 2011

Так же, как все остальные упоминали, см. Это примечание: http://php.net/mysql_real_escape_string#refsect1-function.mysql-real-escape-string-notes

Также вы должны увидеть ошибки, по крайней мере, в разработке. См .: error_reporting ()

1 голос
/ 11 декабря 2011

Ваше соединение должно быть установлено до того, как вы позвоните mysql_real_escape_string()

Итак, переместите mysql_connect("localhost","root","") or die(mysql_error()); наверх.

1 голос
/ 11 декабря 2011

Переместите оператор mysql_connect() выше всего остального.

// put this at the TOP
mysql_connect("localhost:3306","root","") or die(mysql_error());
1 голос
/ 11 декабря 2011

Вы должны вызвать mysql_real_escape_string () после подключения.
в противном случае эта функция возвращает пустую строку, и ваш запрос не выполняется.

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

Кроме того, вы должны улучшить свою формальную логику.
Чтобы сделать утверждение типа «PHP, похоже, отказывается подключаться к MySQL», вам сначала нужно его проверить. Connect представляет собой одну строку и возвращает значение.
Вы можете проверить это значение и сделать определенный вывод.
Но бессмысленно выполнять весь код из нескольких десятков строк и делать утверждения только об одной.

...