Вы не зашли.
Главная » PHP » PDO
#1. WapStyle Off (3)
Участник
2011.09.22 17:05
Как правильно написать данный код на PDO
Код:
$online = $db->query("SELECT * FROM `online` WHERE `ip` = '$_SERVER[REMOTE_ADDR]'")->fetch(PDO::FETCH_NUM);
if(!$online[0]) $db->exec("INSERT INTO `online` (`ua`,`ip`,`time`) VALUES ('$_SERVER[HTTP_USER_AGENT]','$_SERVER[REMOTE_ADDR]','$_SERVER[REQUEST_TIME]');");
else $db->exec("UPDATE `online` SET `time` = '$_SERVER[REQUEST_TIME]' WHERE `id` = '$online[0]'");
$online = NULL;
$db->exec("DELETE FROM `online` WHERE '$_SERVER[REQUEST_TIME]' - `time` > 360");
#2. Gemorroj On (107)
Administrator
2011.09.22 17:05
для начала нужно хотя бы правильно написать ключи в массивах wink
$_SERVER[REQUEST_TIME] - php тут создаст константу REQUEST_TIME и присвоит ей строку "REQUEST_TIME". круто?
#3. WapStyle Off (3)
Участник
2011.09.22 17:05
А ну да... поленился написать )) а больше вариантов как упростить код нет? Просто если на этом  коде мне разобраться то на остальных соответственно тоже... wink
#4. Gemorroj On (107)
Administrator
2011.09.22 17:05
да есть что изменить, конечно. но тут переменные как бы доверенные, поэтому можно на фильтрацию забить. можно еще, например, обернуть это все в транзакцию.
#5. WapStyle Off (3)
Участник
2011.09.22 18:06
т.е. как то так
Код:
try
{
$dbh -> setAttribute ( PDO :: ATTR_ERRMODE , PDO :: ERRMODE_EXCEPTION );
 
$dbh -> beginTransaction ();
$dbh -> exec ( "insert into staff (id, first, last) values (23, 'Joe', 'Bloggs')" );
$dbh -> exec ( "insert into salarychange (id, amount, changedate) values (23, 50000, NOW())" );
$dbh -> commit ();
}
catch ( Exception $e )
{
$dbh -> rollBack ();
echo "Шеф! Фсё пропало : " . $e -> getMessage ();
}
#6. Gemorroj On (107)
Administrator
2011.09.22 18:06
типо того
#7. WapStyle Off (3)
Участник
2011.09.22 18:06
Вот что получилось
Код:
$online = $db->query('SELECT * FROM `online` WHERE `ip` = "'.$_SERVER['REMOTE_ADDR'].'"')->fetch(PDO::FETCH_NUM);
$db->beginTransaction();
if($online[0]){
$db->exec('UPDATE `online` SET `time` = "'.$_SERVER['REQUEST_TIME'].'" WHERE `id` = "'.$online[0].'"');
} else {
$zapis = $db->prepare("INSERT INTO `online` (`ua`,`ip`,`time`) VALUES (?,?,?);");
$zapis->execute(array($_SERVER['HTTP_USER_AGENT'],$_SERVER['REMOTE_ADDR'],$_SERVER['REQUEST_TIME']));
}
$db->exec('DELETE FROM `online` WHERE "'.$_SERVER['REQUEST_TIME'].'" - `time` > 360');
$db->commit();
$online = NULL;
Отредактировано WapStyle (2011.09.22 18:06)
Страниц: 1
Главная
WEB
PunBB Mod v0.6.2
0.013 s