Я пытаюсь использовать следующий код:удаления запроса не работает через PHP PDO
$Q = DBCon::getCon()->prepare('SELECT * FROM `'.$language['data_table_name'].'` WHERE `id`=:id');
$Q->bindValue(':id', $recordId, PDO::PARAM_INT);
$Q->execute();
var_dump($Q);
var_dump($recordId);
var_dump($Q->fetch(PDO::FETCH_ASSOC));
$Q = DBCon::getCon()->prepare('DELETE FROM `'.$language['data_table_name'].'` WHERE `id`=:id');
$Q->bindValue(':id', $recordId, PDO::PARAM_INT);
$Q->execute();
var_dump($Q);
var_dump($recordId);
, который генерирует следующие данные через var_dump
:
object(PDOStatement)[6]
public 'queryString' => string 'SELECT * FROM `project_nl` WHERE `id`=:id' (length=41)
string '5' (length=1)
array (size=4)
'id' => int 5
'name' => string 'test' (length=4)
'description' => string 'test' (length=4)
'big_image' => string 'test' (length=4)
object(PDOStatement)[6]
public 'queryString' => string 'DELETE FROM `project_nl` WHERE `id`=:id' (length=39)
string '5' (length=1)
, который должен, насколько я знать, удалить запись, где id
равно 5
из следующей таблицы:
|Table name: project_nl |
---------------------------------------
| id | name | description | big_image |
---------------------------------------
| 1 | test | test | test |
| 5 | test | test | test |
Однако кусок кода фактически ничего не удаляет. Он также не вызывает ошибок/исключений.
Когда я, однако, скопирую запрос из var_dump
и вставляю его в phpMyAdmin, строка удаляется.
Кроме того, сценарий полон рабочих insert
, update
и select
запросов, которые все работают нормально. Это всего лишь DELETE
, который ничего не делает.
Почему вы явно связываете его как PARAM_STR, а не _INT? Разве это не числовая колонка? Получаете ли вы какие-либо результаты при переключении DELETE для SELECT в этом разделе кода? – mario
@mario Я изменил его на 'PARAM_INT' и добавил запрос' select' с его результатом. –
Возможно, оборванная сделка? Попробуйте использовать простой запрос, а не готовый оператор - для тестирования. – mario