@Ivan912

Как обновить все ячейки у определённого id?

Есть ли в php возможность обнулить все ячейки у определённого id? uid =222 нужно во всех ячейках записать 0

$mysqli->query ("UPDATE `121` SET `` = '0' WHERE `121`.`uid` =  222");


z2l6k.png
  • Вопрос задан
  • 88 просмотров
Пригласить эксперта
Ответы на вопрос 2
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Ну вот так:
$uid = 222;
if ($result = $mysqli->query("SELECT * FROM `121` WHERE `uid`='".$mysqli->real_escape_string($uid)."' LIMIT 1"))
{
    $set = array();
    $row = $result->fetch_object();
    foreach ($row as $k => $v)
    {
        if ($k != "uid" AND $v !== 0)
        {
            $set[] = "`{$k}`='0'";
        }
    }
    $result->close();
    $mysqli->query("UPDATE `121` SET ".implode(", ", $set)." WHERE `uid`='".$mysqli->real_escape_string($uid)."'");
    unset($set, $result, $row);
}
Ответ написан
Immortal_pony
@Immortal_pony Куратор тега PHP
В схеме INFORMATION_SCHEMA хранятся системные данные о таблицах, колонках и прочих потрохах.
Данные оттуда помогут составить запрос.
SELECT
	CONCAT(
		'UPDATE `121` SET `',
		GROUP_CONCAT(`COLUMN_NAME` SEPARATOR '`=0, `'),
		'`=0 WHERE `uid`=\'222\''
	) AS 'updateQuery'
FROM 
	`INFORMATION_SCHEMA`.`COLUMNS` 
WHERE 1
	AND `TABLE_SCHEMA`='test' -- подставьте здесь название своей БД
	AND `TABLE_NAME`='121'
	AND `COLUMN_NAME` != 'uid'

Результатом этого запроса будет как раз тот SQL-запрос, который ввам нужен.
Примерно такой:
UPDATE `121` SET `222`=0, `777`=0, `888`=0 WHERE `uid`='222'
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы