вставка базы данных с правилами if if через pdo - PullRequest
0 голосов
/ 24 февраля 2012

Я пытаюсь выполнить вставку mysql через pdo. вставка работает нормально, но мне нужны некоторые правила, и я не могу обернуть ее вокруг, так как pdo мне незнаком.

Вот код вставки:

$qry = $dbh->prepare(
    'INSERT INTO statistics (page, who, ip) VALUES (?, ?, ?)');
$qry->execute(array($pdotitle, $name, $ip));

Это делает то, что говорится правильно, но мне нужно создать правило, которое выбирает строки из статистики и проверяет, существует ли уже строка с ip пользователей.

как то так:

$ip = $_SERVER['remote_addr']
$qry = $dbh->prepare(
    'SELECT * FROM statistics WHERE page = :pdotitle);
$qry->execute(array($pdotitle)');
if (ip == '$ip') { /**do nothing**/ } else { /**do insert**/ }

Как мне это сделать?

1 Ответ

2 голосов
/ 24 февраля 2012

Вы, наверное, подумали об этом:

$ip = $_SERVER['remote_addr']
$qry = $dbh->prepare(
    'SELECT * FROM statistics WHERE page = :pdotitle AND ip = :ip');
$qry->execute(array($pdotitle, $ip));
$row = $qry->fetch();
if (!is_null($row)) { /**do insert**/ }

Что вам нужно сделать, так это правильно использовать SQL. Поместите ограничение UNIQUE в столбец ip, и вы можете сделать

// insert each ip only only and ignore the rest
$qry = $dbh->prepare(
    'INSERT IGNORE INTO statistics (page, who, ip) VALUES (?, ?, ?)' 
);

// but maybe you really want to keep the table updated 
$qry = $dbh->prepare(
    'REPLACE INTO statistics (page, who, ip) VALUES (?, ?, ?)' 
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...