Я запускаю $ search query, который возвращает no. строк и использование оператора if Else
If (no. of rows>0{
Update The row where symbol=123;
}else{
Insert new row
}
Я могу успешно выполнить запрос. У меня есть столбец со значением (идентификатор (основной), имя и символ). Я хотел бы обновить значение строки, если символ = 123; и вставьте, если оно отличается от 123.
Я могу вставить новую строку, когда я ввожу другой символ, но не могу обновить значение, хотя выполняется успешно, если символ № не совпадает.
Вот мой код
$sql="SELECT * FROM entrance WHERE symbol='15369-2017-02'";
$STH = $db->prepare($sql);
$STH->execute(array(symbol));
$User = $STH->fetch();
if (!empty($User)){
$sql = "UPDATE entrance SET name ='Sagar Rawal'
WHERE symbol='15369-2017-02'";
$q = $db->prepare($sql);
$q->execute($sql);
}
else{
$sql = "INSERT INTO entrance(name,symbol) VALUES (:a,:b)";
$q = $db->prepare($sql);
$q->execute(array(':a'=>$a,':b'=>$b));
}
Но когда я запускаю из командной строки Mysql ниже кода
UPDATE entrance SET name="Ritish Karki" WHERE symbol="15369-2017-02"
Затем значение успешно изменилось. Любая помощь?
Вы могли бы использовать что-то вроде этого запроса INSERT... ON DUPLICATE KEY UPDATE Синтаксис
INSERT INTO entrance(name,symbol) VALUES ($a,$b) ON DUPLICATE KEY UPDATE name = 'Sagar Rawal';
Почему ваш нынешний подход не работает? Смотрите комментарий Ника под вашим вопросом
$STH->execute(array(symbol));
смотрите внимательно, вы не связываете символ правильно
where symbol=15369-2017-02
сравниваетsymbol
с15369-2017-02 = 13350
. Должен бытьwhere symbol='15369-2017-02'