Не работает условие php mysql pdo

133
07 мая 2019, 15:30

Подскажите пожалуйста, почему не работает данное условие?

<?php
$host = 'localhost';
    $db   = '';
    $user = '';
    $pass = '';
    $charset = 'utf8';
    $dsn = "mysql:host=$host;dbname=$db;charset=$charset";
    $pdo = new PDO($dsn, $user, $pass);
    $stmt = $pdo->query("SELECT * FROM task WHERE id_t = ".$_GET['id']."");
while ($row = $stmt->fetch()) {
if ($row['process_t'] == $_POST['process_t']) {
    $pdo = new PDO($dsn, $user, $pass);
    $s1="UPDATE task SET name_t='".$_POST['name_t']."', desc_t='".$_POST['desc_t']."', process_t='".$_POST['process_t']."', status_t='".$_POST['status_t']."', client_t='".$_POST['user_id']."'  WHERE id_t='".$_POST['id']."'";
}
else {
    $stmt2 = $pdo->query("SELECT * FROM stages limit 1");
while ($row2 = $stmt2->fetch()) {
    $pdo = new PDO($dsn, $user, $pass);
    $s1="UPDATE task SET name_t='".$_POST['name_t']."', desc_t='".$_POST['desc_t']."', process_t='".$_POST['process_t']."', status_t='".$row2['status_t']."', client_t='".$_POST['user_id']."'  WHERE id_t='".$_POST['id']."'";
}
}
}
$pdo->exec($s1);
header("Location: /taskedit/?done&id=".$_POST['id']."");
?>

Такие ошибки: PHP Notice: Undefined index: id in * on line 11

PHP Fatal error: Call to a member function fetch() on boolean in * on line 12

Answer 1

Вот что вы пытаетесь сделать

$stmt = $pdo->query("SELECT * FROM task WHERE id_t = ".$_GET['id']."");

вот что вы получаете

PHP Notice: Undefined index: id in * on line 11

В переводе на русский, вам сказано, что в _GET нет поля id. параметр не передан.

Что получаете в тексте запроса, если параметра нет? Вот что

SELECT * FROM task WHERE id_t =

Валидный ли этот запрос? нет. очевидна синтаксическая ошибка. Что возращает метод query ? в данном случае? Возвращает false.

Что вы далее делаете?

$row = $stmt->fetch()

у false есть метод fetch ? Нет. Что вам пхп отвечает на это?

PHP Fatal error: Call to a member function fetch() on boolean in * on line 12

В переводе - невозможно вызвать метод fetch у булевой переменной.

Что надо в этой ситуации сделать?

  • Убедиться что параметра $_GET['id'] передан скрипту.
  • Если не передан, то выстроить логику скрипта иначе
  • передать значение параметра в запрос, используя подготовленные выражения c prepare и execute
READ ALSO
PHP: Не работает скрипт авторизации

PHP: Не работает скрипт авторизации

Не работает скриптТочнее не происходит авторизация

139
Проблема с функцией GetAsyncKeyState()

Проблема с функцией GetAsyncKeyState()

У меня есть меню, которое управляется стрелками и на нажатие Enter переходит по нужному пунктуПроблема в том, что все нажатия Enter сохраняются...

136
Что представляет собой cout?

Что представляет собой cout?

cout не ключевое словоОн подключается через библиотеку iostream и сам редактор vs говорит что это функция

150
Странно работает цикл

Странно работает цикл

Есть код калькулятора ,вот он :

156