2015-05-13 2 views
1

Попытка удалить некоторые строки из моей базы данных, но ошибки не возвращаются из инструкции, и если я запустил запрос в phpmyadmin, он фактически удалит запись. Также выполнение операторов SELECT без проблем.PHP Mysql не удаляет строки

в $ OID пары имеют целочисленное значение

$stmt = $this->db->prepare('DELETE FROM tbl_bdays WHERE uniqueId = ?'); 
$stmt->bind_param("i", $oId); 
$stmt->execute(); 
$stmt->close(); 
+0

Вы подтвердили, что '$ oId' содержит действительный идентификатор? Попробуйте запустить запрос непосредственно в PHPMyAdmin, убедитесь, что ошибок в иностранных таблицах не возникает. – Styphon

+0

На самом деле я возвращаю значение $ oId, и это нормально, имеет значение и существует в базе данных. Выполнение запроса на phpMyAdmin удаляет запись. – nizx

+0

@ marijnz0r это не PDO, а MySQLi. Изучите разницу перед редактированием сообщений и добавлением тегов. – Styphon

ответ

5

Если имя таблицы буквально table, то его ошибка, потому что table является reserved word

Если вы действительно не можете изменить имя, то вам необходимо обернуть его обратными выводами:

DELETE FROM `table` WHERE uniqueId = ? 
+0

Нет, имя таблицы не является таблицей, это tbl_bdays, также пытались с обратными окнами, но все же запрос выполняется на phpMyAdmin, но не с PHP. – nizx

+0

@nizx, тогда вы должны были уточнить, что ранее добавили '$ stmt-> execute() или die ($ this-> db-> error);' и проверьте, убедитесь, что вы включили отчет об ошибках – Ghost

+0

Backticks сделали это. Странно, поскольку запросы SELECT и INSERT работают без них. – nizx

0

У вас нет проверки ошибок, вы должны проверять каждый шаг t он способ для ошибок. Попробуйте следующее:

$stmt = $this->db->prepare('DELETE FROM tbl_bdays WHERE uniqueId = ?'); 
if (! $stmt) die('Error whilst preparing: '.$this->db->error); 
if (! $stmt->bind_param("i", $oId)) die('Error whilst binding: '.$this->db->error); 
if (! $stmt->execute()) die('Error whilst executing: '.$this->db->error); 
$stmt->close(); 
Смежные вопросы