#php #mysql #sql
#php #mysql #sql
Вопрос:
Привет, я хочу проверить, есть ли готовый пользователь в БД с тем же именем пользователя, прежде чем добавлять его в БД… но я получаю белую страницу.
$sql2="SELECT * FROM users WHERE username='$user' ";
$result2=msyql_query($sql2,);
if (mysql_num_rows($result2)==0) {
echo "A account is all ready here" ;
}
else{
Это основной бит, который он проверяет.
Вот мой полный код:
include('config.php');
ini_set('display_errors',1);
error_reporting(E_ALL);
print_r ($_SESSION) ;
if ($_SESSION['number_three'] == 3 ) {
$user = mysql_real_escape_string($_POST['username']);
$pass = mysql_real_escape_string($_POST['password']);
$email = mysql_real_escape_string($_POST['email']);
$avatar = mysql_real_escape_string($_POST['avatar']);
$starter = mysql_real_escape_string($_POST['starter']);
$gender = mysql_real_escape_string($_POST['gender']);
$_SESSION['start'] = $starter;
$sql = "SELECT * FROM pokemon WHERE pic='$_SESSION[start]'";
$result = mysql_query($sql) or die(mysql_error());
$values = mysql_fetch_array($result);
$sql2="SELECT * FROM users WHERE username='$user' ";
$result2=mysql_query($sql2,);
if (mysql_num_rows($result2)==0) {
echo "A account is all ready here" ;
}
else{
$_SESSION['test'] = $values['name'];
mysql_query("INSERT INTO users
(username, password, email, avatar, gender) VALUES
('$user','$pass','$email','$avatar','$gender' )
") or die(mysql_error());
mysql_query("INSERT INTO user_pokemon
(pokemon, belongsto, slot) VALUES
('".$_SESSION['test']."','$user','1' )
") or die(mysql_error());
unset($_SESSION['number_three']);
} else {
echo " You do not ment to be here ! Go Away !";
}
}
Если я удаляю верхнюю часть кода в первом бите, скрипт работает, но не проверяет, находится ли пользователь уже в БД ….. с помощью скрипта, теперь я получаю белую страницу с верхним битом кода в первом бите почтового кода, и я не получаюкакие-либо ошибки….
Комментарии:
1. У вас много синтаксических ошибок в коде. Включите обмен сообщениями об ошибках или просмотрите журналы ошибок PHP.
2. Разве вы не хотите проверить, если
mysql_num_rows($result2)==1
, а не еслиmysql_num_rows($result2)==0
?3. Нет, я хочу проверить, есть ли у пользователя учетная запись, а не если у пользователя нет учетной записи
4. Этот форум предназначен для помощи в написании кода. Для людей, которые не видят ошибок или у которых есть хорошие другие программисты, это ошибка! так что взрослей!
5. попробуйте также добавить E_STRICT, если вы <PHP 5.4.0
Ответ №1:
$result2=mssql_query($sql2,);
Вы звоните mssql_query
, а не mysql_query
.
Ответ №2:
mssql_query
? Попробуйте mysql_query
вместо этого.
Комментарии:
1. все еще получаю белую страницу после ее изменения
2. Проверьте свой журнал ошибок php. (или добавьте
error_reporting(E_ALL);
перед вашим кодом).3. у меня есть, вы можете видеть по моему коду и не получаете ни одного… только белая страница
4. Вы не включили сообщение об ошибках в начале своего кода, вы добавили его после включения другого файла.
5. Я поставил его после включения ….. и по-прежнему не показывает ошибок, думаю, мне не хватает { или} некоторые были
Ответ №3:
Используйте PDO с выбросом исключения:
try {
$PDO = new PDO($dsn, $username, $password, array(PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION));
//use $PDO->query(); Errors will be thrown and you'll be able to see them. This way you don't have to check the boolean return values on queries.
} catch(PDOException $error) {
echo $error->getMessage();
}
Комментарии:
1. 1 — в 2012 (почти 2013) на самом деле больше нет оправдания использованию
mysql_*
функций; они устарели по какой-то причине .
Ответ №4:
Я не уверен, что это единственная проблема, но, во-первых, в строке, где вы выполняете этот второй запрос, вы вызываете mssql_query
вместо than mysql_query
, который является функцией запроса для баз данных Microsoft SQL Server, и не знаете, как получить результаты обратно из MySQL.
Комментарии:
1. Я изменил это, но все равно получаю белую страницу
Ответ №5:
- Попробуйте добавить E_STRICT, если у вас более старый PHP, чем 5.4.0.
- Добавьте
or die (mysql_error());
, чтобы узнать, есть ли ошибка в запросе. - Попробуйте использовать
if (!mysql_num_rows($result2))
илиif (mysql_num_rows($result2) < 1)