Получение базы данных ошибок не выбрано
Код:
<?php
session_start();
$_SESSION['msg'] = "";
$con = mysql_connect('localhost','me','omglol');
mysql_select_db('test',$con);
$q = mysql_query(sprintf("select * from UserTable where (nick=\"%s\") AND (pass=SHA1(\"%s\"))",$_POST['nick'],$_POST['pass']),$con) or die(mysql_error());
Это выглядит правильно для меня. И да, я знаю, что "тест" существует. И содержит UserTable.
Во-первых, спасибо избавиться от добавления php4 к тегам, которые я забыл:(
В соответствии с рекомендациями Laser_wizard я сделал следующее: (Весь код):
<?php
session_start();
$_SESSION['msg'] = "";
$con = mysql_connect('localhost','me','omglol');
if(!$con)
{
die("The connection to mysql server is not being made.");
}
$db = 'test';
$selected = mysql_select_db($db,$con);
if(!$selected)
{
die(sprintf("Cannot use database %s.",$db));
}
//$q = mysql_query(sprintf("select * from UserTable where (nick=\"%s\") AND (pass=SHA1(\"%s\"))",$_POST['nick'],$_POST['pass']),$con) or die(mysql_error());
$q = mysql_query("select * from UserTable",$con) or die("The query statement still isn't working");
$row = mysql_fetch_assoc($q);
$dest=0;
if(mysql_num_rows($q)==0)
{
//$testn = mysql_query(sprintf("select * from UserTable where nick=(\"%s\")",$_POST['nick']),$con);
$testn = mysql_query("select * from Category",$con) or die("The 2nd query statement still isn't working");
if(mysql_num_rows($testn)==0)
{
$_SESSION['msg'] = "Nick ".$_POST['nick']." was not found. Check spelling or <a href=\\\"register.php\\\">register</a>";
}
else
{
$_SESSION['msg'] = "Password incorrect";
}
if(isset($_SESSION['attempts']))
{
$_SESSION['attempts'] = $_SESSION['attempts'] + 1;
}
else
{
$_SESSION['attempts'] = 1;
}
mysql_free_result($q);
mysql_free_result($testn);
mysql_close($con);
$dest = 'Location:http://cs4.sunyocc.edu/~me/onestopshop/login.php';
}
else
{
$_SESSION['nick'] = $_POST['nick'];
$_SESSION['email'] = $row['email'];
mysql_free_result($q);
mysql_close($con);
$dest = 'Location:http://cs4.sunyocc.edu/~me/onestopshop/index.php';
}
header($dest);
exit();
?>
Та же ошибка, что и выше. Итак, $ con установлен, а $ selected читается как true, поэтому я не понимаю, что делать дальше. Я предполагаю, что mysql_select_db($db,$con); И при этом $ testn все еще не работает, но все еще читает правду? Я запутался, что делать дальше.
2 ответа
Добавьте несколько операторов die для проверки соединения и убедитесь, что оно установлено. Помимо этого, я бы сказал, чтобы закомментировать вашу строку запроса, чтобы увидеть, если это вызывает проблему.
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
die('Not connected : ' . mysql_error());
}
// make foo the current db
$db_selected = mysql_select_db('foo', $link);
if (!$db_selected) {
die ('Can\'t use foo : ' . mysql_error());
}
Если у вас PHP >= 5.1.0, забудьте эти инструкции и используйте PDO:
<?php
$conn = new PDO('mysql:host=localhost;dbname=test', 'user', 'pass');
foreach($conn->query('SELECT * from TEST') as $row) {
print_r($row);
}
?>