Array ( [0] => Array ( [username] => vasya [userpass] => 1234 [age] => 34 ) )
Форум → Программирование → PHP для идиотов → Проверка перед составлением запроса в БД
Проверка перед составлением запроса в БД
Страницы: ← Предыдущая страница →
-
Ноя. 30, 2008, 8:49 п.п., спустя 3 минуты 39 секунд
-
Ноя. 30, 2008, 8:53 п.п., спустя 4 минуты 1 секунду
это вот это??
$sql = "SELECT username FROM `name_db` WHERE username='$username'";
$result = mysql_query($sql);
for ($data=array(); $row = mysql_fetch_assoc($result); $data[]=$row);
??
не верю 100%. в лучшем случае у вас в массиве должно быть username это во первых, во вторых Array ( [0] => Array это не имеет отношения к if (!isset($data['username'])){Сапожник без сапог -
Ноя. 30, 2008, 8:55 п.п., спустя 2 минуты 43 секунды
ах да. поправка…
я проверял с таким кодом$sql = "SELECT * FROM `name_db` WHERE username='$username'";
$result = mysql_query($sql);
for ($data=array(); $row = mysql_fetch_assoc($result); $data[]=$row); -
Ноя. 30, 2008, 8:58 п.п., спустя 2 минуты 25 секунд
а это явно не проверил.
во вторых Array ( [0] => Array это не имеет отношения к if (!isset($data['username'])){Сапожник без сапог -
Ноя. 30, 2008, 9:15 п.п., спустя 17 минут 2 секунды
ну вот всё и выяснилось. всего-то во всём коде надо было изменить строчку
if ($data[0]['username'] == ""){ -
Ноя. 30, 2008, 9:18 п.п., спустя 2 минуты 47 секунд
вы правы, но изначальная ошибка - так писать :)
а вообще на кой хрен вам foreach если у вас все равно интересует первая строка в бд, выкиньте к чертям форич и оставьте $data = mysql_fetch_assoc($result);
и можете использовать как раньше if($data['username']) …
до кучи - код в книгах - полное Г. его использовать не стоит. лучше сомтреть код на php.net и до кучи думать как лучше.Сапожник без сапог -
Ноя. 30, 2008, 9:27 п.п., спустя 9 минут 38 секунд
phpdude, я извиняюсь за то, что погорячился и нагрубил. Просто накипело и достало, что на каждом форуме каждый пытается показать из себя афигенно умного, а на самом деле 0. Не имею ввиду Вас.
Цикл foreach мне так и так придётся там использовать. я же должен обработать и внесни в БД все переменные. -
Ноя. 30, 2008, 9:32 п.п., спустя 5 минут 12 секунд
ну тогда используйте foreach, но советую использовать всетаки while как это более рационально, есть пистоелт позволяет забивать гвозди, то часто ли им забивают их? нет, для этих целей есть молоток!))
я сорвался хз почему. потому что код каша, ненавижу плохой код )) прости короч )Сапожник без сапог -
Ноя. 30, 2008, 9:39 п.п., спустя 6 минут 32 секунды
что-то я не пойму чем while рациональнее?!
C while разве не больше строчек кода получится? -
Ноя. 30, 2008, 9:41 п.п., спустя 2 минуты 16 секунд
дело не в строчках кода, а в том, как это будет восприниматься следующим после тебя программистом, всегда думай что ты кому то это передавать дальше будешь, а если он не слышал про for с таким применением?))) уверен многие такого использования for не знают. все ушел спать. спокойной.Сапожник без сапог -
Дек. 1, 2008, 3:13 д.п., спустя 5 часов 32 минуты 10 секунд
ИМХО сделал бы так
$record = mysql_fetch_assoc(mysql_query( "SELECT COUNT(*) FROM `name_db` WHERE username='$username'"));
if ($record['COUNT(*)'] > 0) {
//апдейт
}
else {
//инсерт
} -
Дек. 1, 2008, 6:18 д.п., спустя 3 часа 4 минуты 41 секунду
Sin, эту конструкцию
if (!isset($data['username'])){
$sql_i = "INSERT INTO `name_db` VALUES ('$username', '$userpass', '$age')";
$result_i = mysql_query($sql_i);
} else {
$sql_u = "UPDATE `name_db` SET userpass='$userpass', age='$age' WHERE username='$username'";
$result_u = mysql_query($sql_u);
}
Можно заменить на:
Вешаем на username уникальный индекс, не только UNIQUE (вопросы в ман по MySQL).
mysql_query("insert into `name_db` (`username`, `userpass`, `age`) values ('$username', '$userpass', '$age') on duplicate key update `userpass` = '$userpass', `age` = '$age' ");
Теперь, если username у нас уже есть, то мы обновляем у него информацию, а если нет, то создаем новую запись.https://smappi.org/ - платформа по созданию API на все случаи жизни -
Дек. 1, 2008, 10:15 д.п., спустя 3 часа 56 минут 59 секунд
Или же используем REPLACE.
Почему никому не нравится REPLACE?? =( -
Дек. 1, 2008, 11:02 д.п., спустя 46 минут 26 секунд
Или же используем REPLACE.
Почему никому не нравится REPLACE?? =(
а ты почитай сравнение REPLACE и ON DUPLICATE KEY, потом спрашивайhttps://smappi.org/ - платформа по созданию API на все случаи жизни -
Страницы: ← Предыдущая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!