Я довольно новичок в использовании PDO, и я пытаюсь перенести некоторые из моих сайтов с mysql_ * на него.PDO Заявления не отправляются в базу данных
Я образовал следующее:
if ($userData) {
$query = "SELECT * FROM table WHERE user_id = " . $db->quote($userData['id']);
$result = $db->query($query);
if ($result) {
while ($row = $result->fetch(PDO::FETCH_ASSOC)) {
if ($result->rowCount > 1) {
$sql = "DELETE FROM tokens WHERE `user_id` = " . $db->quote($userData['id']) . "' AND `id` != '" . $row['id'];
$stmt = $db->prepare($sql);
$stmt->execute();
}
}
if (!$row) {
$sql = "INSERT INTO tokens SET `user_id` = " . $db->quote($userData['id']) . "', `name` = '" . $db->quote($userData['name']) . "',`access_token` = '" . $db->quote($token) . "',`alive` ='Y'";
$stmt = $db->prepare($sql);
$stmt->execute();
} else {
$sql = "UPDATE tokens SET `access_token` = " . $db->quote($token) . "' WHERE `id` = " . $row['id'] . "";
$stmt = $db->prepare($sql);
$stmt->execute();
}
}
}
$userData
является переменной API Facebook.
Фрагмент выше выглядит хорошо для меня, но когда я просматриваю его на живом веб-сайте, информация не добавляется в базу данных.
Как бы исправить это? Будем очень благодарны любой помощи.
'УДАЛЕНИЕ * от' - избавиться от звезды. Плюс, просто ради аргумента, 'table' является зарезервированным словом MySQL ;-) Вам также нужно проверить наличие ошибок/исключений. –
Добавьте '$ db-> setAttribute (PDO :: ATTR_ERRMODE, PDO :: ERRMODE_EXCEPTION);' сразу после открытия соединения. –
Могу ли я предположить, что ваша таблица не называется «таблицей»? Обратите внимание, что вы действительно должны использовать подготовленные операторы, как предназначенные, вместо того, чтобы вводить значение в запрос. Вы никогда не должны использовать цитату, вместо этого вы ставите? или: введите в свой запрос, а затем используйте bind_param, чтобы безопасно установить значение. – Levi