Проблема с поиском записи в таблице Mysql

fireman

Guest
Проблема с поиском записи в таблице Mysql

Мне необходимо сделать следующее:
1. Проверка есть ли в таблице запись с такими значениями полей, а если нет записать запись в таблицу. Пытался сделать следующим образом:
$result=mysql_query("Select * from clients where Field='".addslashes($var)."'",$conn);
echo mysql_error();
if (!$result)
{
$pravo=mysql_query("insert into clients (field) values ('". addslashes($name)."','". addslashes($surname)."','". addslashes($faculty)."',". addslashes($course).",'". addslashes($profession)."','". addslashes($nik)."','". addslashes($pass)."')");
if ($pravo==false)
{
mysql_close($conn);
echo("You have not prav");
} else
{
mysql_close($conn);
header("Location: http//localhost/PORTALINIT.php");
exit;
}
} else
{
echo("You register");
}

-~{}~ 27.04.05 09:10:

В чём баг?

-~{}~ 27.04.05 09:12:

В таблице записи со значением точно нет
А у меня скрипт идет во внешний else
 

rotoZOOM

ACM maniac
Баг в тебе.
Смотри что возвращает функция mysql_query, в каком варианте она возвратит FALSE.
Тебе необходимо вставить проверку таким образом:
if (!mysql_num_rows($result)){
вместо твоей
if (!$result)
 

fireman

Guest
Это я для примера написал, а так там список полей проверки и вставки, а регистр букв соблюден. Промто полей много код был бы не читабелен
 

zap

Guest
твой баг находится здесь:
Код:
$pravo=mysql_query("insert into clients (field) values ('". addslashes($name)."',
'". addslashes($surname)."',
'". addslashes($faculty)."',
'". addslashes($course)."',
'". addslashes($profession)."',
'". addslashes($nik)."',
'". addslashes($pass)."')");
почему ты выделяеш один столбец, а пихаеш аж 7 столбцов??
 

fireman

Guest
$result=mysql_query("Select * from clients where Birthday='".addslashes($date)."' and Name='".addslashes($name)."'",$conn);
echo mysql_error();
if (!mysql_num_rows($result)){
{
$pravo=mysql_query("insert into clients (Name,Surname,Faculty,Course,Profession,Nik,Password) values ('". addslashes($name)."','". addslashes($surname)."','". addslashes($faculty)."',". addslashes($course).",'". addslashes($profession)."','". addslashes($nik)."','". addslashes($pass)."')",$conn);
if ($pravo==false)
{
mysql_close($conn);
echo("You have not prav");
} else
{
mysql_close($conn);
header("Location: http//localhost/PORTALINIT.php");
exit;
}
} else
{
echo("You register");
}
}
} else
{
echo("You ented false information");
}
Не хотел все поля писать чтоб вы не парились, а вы меня не поняли, так что извините вот код СО ВСЕМИ ПОЛЯМИ
 

zap

Guest
2 Лексеич

быват, но нужно лучше смотреть

-~{}~ 27.04.05 09:26:

тут можно докапать до чего угодно, если уж ты начал использовать служебные ковычки почему не везде(тобиш ". addslashes($course)."), енто первое, второе почему после конкатенации строки(после точки) идет пробел

-~{}~ 27.04.05 09:31:

косяк полюбому в insert запросе, так как условие верно, выведи все свои addslashes(..) мож туда че лишнее пихается, используй обработчик ошибок error_reporting(E_ALL ^ E_NOTICE)
 

fireman

Guest
Спасибо за поправку ошибок в синтаксисе, а то я не доглядел!
Такаже спасибо за подсказку насчет Mysql_num_rows,
теперь скрипт выглядит так:
$result=mysql_query("Select * from clients where Birthday='".addslashes($date)."' and Name='".addslashes($name)."'",$conn);
echo mysql_error();
if (!mysql_num_rows($result)){
{
$pravo=mysql_query("insert into clients (Name,Surname,Birthday,Faculty,Course,Profession,Nik,Password) values ('".addslashes($name)."','".addslashes($surname)."','".addslashes($date)."','".addslashes($faculty)."','".addslashes($course)."','".addslashes($profession)."','".addslashes($nik)."','".addslashes($pass)."')",$conn);
if ($pravo==false)
{
mysql_close($conn);
echo("You have not prav");
} else
{
mysql_close($conn);
header("Location: http//localhost/PORTALINIT.php");
exit;
}
} else
{
echo("You register");
}
Результат: Он не заносит в базу данные
 

SelenIT

IT-лунатик :)
zap

кому и чем мешает несчастный пробел после точки при конкатенации?
 
Сверху