Что бы понять насколько хорошо я понял логику написания скриптов я не гуглил по этому вопросу и написал скрипт проверки на уникальность почты. Пожалуйста, эксперты, скажите где мне надо подучить или улучшить свои знания =)) Буду очень благодарен.
Код:
//Проверка на уникальность почты
$result = mysql_query ("SELECT `email` FROM `test`");
$myrow = mysql_fetch_array ($result);
do
{
if ($myrow['email'] == $_POST['email'] && $_POST['email'] == $_POST['email2']) // Вторая половина это проверка полей ввода почты на идентичность
{
echo 'В базе уже есть такой почтовый ящик ('. $_POST['email'] . ')';
exit();
}
}
while ($myrow = mysql_fetch_array ($result));
Спустя 1 минута, 23 секунды (9.11.2010 - 18:05) DmitryOpalev написал(а):
$result = mysql_query("SELECT * FROM WHERE id='$id' ") //К примеру
if ($result)
{
die('Запись с таким номером уже есть...');
}
Спустя 7 минут, 47 секунд (9.11.2010 - 18:13) koala написал(а):
DmitryOpalev, спасибо, ваш вариант более оптимальный и совершает всего один запрос к базе. Ну а мой скрипт будет совершать запросы пока не найдет адрес или цикл закончится =))
Мне еще есть чему учится =)
Мне еще есть чему учится =)
Спустя 5 минут, 41 секунда (9.11.2010 - 18:19) Sanchopansa написал(а):
ну для начала я тебе вроде уже говорил по поводу цыклов с пост условием...
вот так писать цыкл для обработки записей из БД правильно!
А что по поводу твоего вопроса то я делаю это так и не парюсь что лучше..
$result = mysql_query ("SELECT `email` FROM `test`");
while ($myrow = mysql_fetch_array ($result))
{
if ($myrow['email'] == $_POST['email'] && $_POST['email'] == $_POST['email2']) // Вторая половина это проверка полей ввода почты на идентичность
{
echo 'В базе уже есть такой почтовый ящик ('. $_POST['email'] . ')';
exit();
}
}
вот так писать цыкл для обработки записей из БД правильно!
А что по поводу твоего вопроса то я делаю это так и не парюсь что лучше..
$result = mysql_query ("SELECT COUNT(*) FROM `test` WHERE `email` = '{$_POST['email']}'");
if (mysql_result($result))
{
echo "такое мыло уже есть!";
} else {
echo "Все гуд!";
}
Спустя 36 секунд (9.11.2010 - 18:19) Slays написал(а):
$myrow, походу Попов опять
Спустя 2 минуты, 49 секунд (9.11.2010 - 18:22) Sanchopansa написал(а):
Slays
А этот Попов таким конструкциям с цыклом do while тоже учит?
если да то я бы плюнул ему в лицу за извращенный подход к обучению свежих и светлых умов
А этот Попов таким конструкциям с цыклом do while тоже учит?
do
{
if ($myrow['email'] == $_POST['email'] && $_POST['email'] == $_POST['email2']) // Вторая половина это проверка полей ввода почты на идентичность
{
echo 'В базе уже есть такой почтовый ящик ('. $_POST['email'] . ')';
exit();
}
}
while ($myrow = mysql_fetch_array ($result));
если да то я бы плюнул ему в лицу за извращенный подход к обучению свежих и светлых умов
Спустя 36 секунд (9.11.2010 - 18:23) DmitryOpalev написал(а):
Цитата |
Ну а мой скрипт будет совершать запросы пока не найдет адрес или цикл закончится =)) |
Может я не правильно понял, но можно сделать запрос
$result = mysql_query("SELECT * FROM WHERE id='$id' ") //К примеру
if ($result)
{
die('Запись с таким номером уже есть...');
}
до того как делать основной... тогда сначала будет проверка, а потом, если она прошла, делать основной запрос...
Спустя 2 минуты, 11 секунд (9.11.2010 - 18:25) Slays написал(а):
$res = mysql_query("SELECT COUNT(*) AS `aux` FROM `test` WHERE `email` = '". $email."'");
if(mysql_result($res, 0) > 0)
echo "уже есть";
Спустя 2 минуты, 58 секунд (9.11.2010 - 18:28) Slays написал(а):
Sanchopansa ак именно за такие извращения его и недолюбливают, мягко говоря =))
А молодежи чо, они все как попугаи копируют =)
А молодежи чо, они все как попугаи копируют =)
Спустя 4 минуты, 29 секунд (9.11.2010 - 18:32) Invis1ble написал(а):
koala
лучше так
лучше так
$result = mysql_query("SELECT COUNT(*) FROM `test` WHERE `email`='".$email."'");
$amount = mysql_result($result, 0, 0);
if ($amount != 0)
die('Есть такой e-mail');
Спустя 1 минута, 33 секунды (9.11.2010 - 18:34) Slays написал(а):
зачем вводить лишнюю переменную, итак все сработает =)
Спустя 3 минуты, 5 секунд (9.11.2010 - 18:37) Invis1ble написал(а):
Slays
Цитата |
зачем вводить лишнюю переменную, итак все сработает =) |
можно ваще так:
if (mysql_result(mysql_query("SELECT COUNT(*) FROM `test` WHERE `email`='".$email."'"), 0, 0) != 0)
die('Есть такой e-mail');
но это не есть хороший тон..
Цитата |
mysql_result() по-моему только 2 параметра принимает |
нет, но тут можно и двумя обойтись
Спустя 2 минуты, 35 секунд (9.11.2010 - 18:40) Sanchopansa написал(а):
Slays
Я просто впервые тут на форуме услышал про этих Поповых и остальных... поэтому и спрашиваю
Я лично не любитель таких методов обучения... http://php.net для меня в большенстве случаев лучший помошник...
Я просто впервые тут на форуме услышал про этих Поповых и остальных... поэтому и спрашиваю
Я лично не любитель таких методов обучения... http://php.net для меня в большенстве случаев лучший помошник...
Спустя 7 минут (9.11.2010 - 18:47) koala написал(а):
Извиняюсь за do while, я когда начинал изучать PHP скачал уроки Попова, ну вот и привязалось. Все, больше такого не буду применять =)))
P.S. Как правильней в запросе вставлять например $_POST['blabla']. У меня всегда ругается на что то.
Пробую так:
Еще так пробую:
Ну и так:
P.S. Как правильней в запросе вставлять например $_POST['blabla']. У меня всегда ругается на что то.
Пробую так:
$result = mysql_query ("SELECT * FROM `test` WHERE id="'$_POST['a']'"");
Еще так пробую:
$result = mysql_query ("SELECT * FROM `test` WHERE id='$_POST['a']'");
Ну и так:
$result = mysql_query ("SELECT * FROM `test` WHERE id="$_POST['a']"");
Спустя 41 секунда (9.11.2010 - 18:47) DmitryOpalev написал(а):
Пиши
И потом вставлять куда хочется...
$blabla = $_POST['blabla'];
И потом вставлять куда хочется...
Спустя 1 минута, 25 секунд (9.11.2010 - 18:49) Slays написал(а):
$result = mysql_query ("SELECT * FROM `test` WHERE `id`=' " . $_POST['a'] . " ' ");
Спустя 1 минута, 48 секунд (9.11.2010 - 18:50) Invis1ble написал(а):
koala
$result = mysql_query ("SELECT * FROM `test` WHERE `id`='".mysql_real_escape_string($_POST['a'])."'");
Спустя 32 секунды (9.11.2010 - 18:51) Invis1ble написал(а):
ай, не успел, Slays опередил =)
Спустя 22 секунды (9.11.2010 - 18:51) Slays написал(а):
ну если с презервативом защитой, то даже так, да =)
Спустя 1 минута, 24 секунды (9.11.2010 - 18:53) koala написал(а):
А разве нельзя сразу без создания переменных? )
Спустя 24 секунды (9.11.2010 - 18:53) Slays написал(а):
выше смотри, нафик эту переменную =)
Спустя 1 минута, 19 секунд (9.11.2010 - 18:54) Invis1ble написал(а):
Slays
a вообще, судя по названию поля (id) - надо так
a вообще, судя по названию поля (id) - надо так
$id = intval($_POST['a']);
$result = mysql_query ('SELECT * FROM `test` WHERE `id`='.$id);
Спустя 1 минута, 52 секунды (9.11.2010 - 18:56) Slays написал(а):
$result = mysql_query ("SELECT * FROM `test` WHERE `id`=' " . (int)$_POST['a'] . " ' ");
Спустя 7 минут, 52 секунды (9.11.2010 - 19:04) koala написал(а):
Спасибо, все работает, вот только осталось научится правильно пользоваться презервативом...
Спустя 3 минуты, 8 секунд (9.11.2010 - 19:07) Slays написал(а):
Спустя 23 минуты, 34 секунды (9.11.2010 - 19:31) DmitryOpalev написал(а):
Цитата |
осталось научится правильно пользоваться презервативом... |
Цитата |
http://phpforum.ru/index.php?showtopic=21213 |
Спустя 1 минута, 18 секунд (9.11.2010 - 19:32) nugle написал(а):
Люди, а как правильнее всего будет?
1.
2.
3.
или как нибудь еще...?Или вообще разници нет?
1.
$result = mysql_query ("SELECT * FROM `test` WHERE `id`=' " . $_POST['a'] . " ' ");
2.
$result = mysql_query ("SELECT * FROM `test` WHERE `id`='".mysql_real_escape_string($_POST['a'])."'");
3.
$result = mysql_query ("SELECT * FROM `test` WHERE `id`=' { $_POST['a'] }' ");
или как нибудь еще...?Или вообще разници нет?
Спустя 58 секунд (9.11.2010 - 19:33) DmitryOpalev написал(а):
1, 2.
Первое просто ищет, второе ищет и защищает от SQL-инъекций
Первое просто ищет, второе ищет и защищает от SQL-инъекций
Спустя 2 минуты, 14 секунд (9.11.2010 - 19:35) nugle написал(а):
то есть 3 это вообще лучше не использовать?
1,2 какое из них лучше тогда?
1,2 какое из них лучше тогда?
Спустя 49 секунд (9.11.2010 - 19:36) DmitryOpalev написал(а):
2...
Защита все-таки...
Защита все-таки...
Спустя 3 минуты, 1 секунда (9.11.2010 - 19:39) nugle написал(а):
А вы каким пользуетесь?
Спустя 3 минуты, 20 секунд (9.11.2010 - 19:43) DmitryOpalev написал(а):
Либо как только что писали...
Либо пишу:
Ну и заменяю:
Либо пишу:
$a = $_POST['a'];
Ну и заменяю:
$result = mysql_query ("SELECT * FROM `test` WHERE id=' $a ' ");
Спустя 5 минут, 55 секунд (9.11.2010 - 19:48) Slays написал(а):
тогда уж
$result = mysql_query ("SELECT * FROM `test` WHERE id=' . $a . ' ");
конкатенация работает быстрей
также не забывай про тип переменной, конструкция (int)$a позволит гарантировать что переменная будет числом, что собственно запрос и ждет
$result = mysql_query ("SELECT * FROM `test` WHERE id=' . $a . ' ");
конкатенация работает быстрей
также не забывай про тип переменной, конструкция (int)$a позволит гарантировать что переменная будет числом, что собственно запрос и ждет
Спустя 51 минута, 22 секунды (9.11.2010 - 20:40) twin написал(а):
Апострофы зачем?
Спустя 4 минуты, 23 секунды (9.11.2010 - 20:44) Slays написал(а):
ну если число ждем, то наверно не за чем
_____________
Vi Veri Veniversum Vivus Vici