«phpClub» — архив тем ("тредов"), посвящённых изучению PHP и веб-технологий.
Аноним 2021/03/11 06:49:18  №1963391 1
Почему у меня не работает UPDATE базы данных?
Перепробовал сто вариантов из интернета ничего не работает. Как будто пустота там где строчка с командой UPDATE
как так?
остальное работает, а UPDATe ни в какую
в чём секрет?
Ответы: >>1963393
Аноним 2021/03/11 06:51:06  №1963393 2
>>1963391
Показывай код, хули.
Ответы: >>1963394
Аноним 2021/03/11 06:53:18  №1963394 3
>>1963393
$sql = "UPDATE map SET owner = $p_id WHERE x = $p_x AND y = $p_y" ;
$stmt = $link->prepare($sql);
$stmt->bind_param($p_id, $p_x, $p_y);
$stmt->execute();

if (!$link->query($sql)) {
echo "query failed: (" . $link->errno . ") " . $link->error;
}
Ответы: >>1963398
Аноним 2021/03/11 07:03:10  №1963398 4
>>1963394
bind делается для ? плейсхолдеров, а ты сразу вхуячил значения в запрос. Плюс там ещё параметр с какими-то форматами нужен вроде.
Дальше query каким боком там?
Короче, у тебя там косяк на косяке, и это я ещё не шарю в этом mysqli или что это.
Читай документацию.
Ответы: >>1963400
Аноним 2021/03/11 07:07:35  №1963400 5
>>1963398
по простому тоже не работает
выходит Error updating record: но без указания ошибки

$sql = "UPDATE `map` SET `owner` = $p_id WHERE map.x = $p_x AND map.y = $p_y";

if (mysqli_query($link, $sql)) {
warn("Record updated successfully");
} else {
echo "Error updating record: " . mysqli_error($link);
}
Ответы: >>1963402 >>1963415 >>1963442
Аноним 2021/03/11 07:11:14  №1963402 6
>>1963400
В базу ту подключился?
Сделай echo $sql и попробуй исполнить руками этот запрос.
Ответы: >>1963407
Аноним 2021/03/11 07:17:39  №1963407 7
>>1963402
сообщение о соединении с базой есть

echo $sql
выдает
UPDATE `map` SET `owner` = 9 WHERE map.x = 34 AND map.y = 34
ввожу в базу руками
работает
Ответы: >>1963418
Аноним 2021/03/11 07:27:42  №1963415 8
>>1963400
Ты в курсе что это не подготовленный запрос? Ты ж подставляешь переменные тупо в строку $sql
Ответы: >>1963437
Аноним 2021/03/11 07:30:29  №1963418 9
>>1963407
Ну хуй знает тогда.
Аноним 2021/03/11 07:58:57  №1963437 10
>>1963415
Покажи подготовленный запрос
Аноним 2021/03/11 08:14:53  №1963442 11
>>1963400

Попробуй в else сдампить:

var_dump($link->connect_errno);
var_dump($link->errno);
var_dump($link->error);
var_dump($link->error_list);
var_dump($link);

Вдруг что найдется.
Ответы: >>1963443
Аноним 2021/03/11 08:16:29  №1963443 12
Ответы: >>1963489
Аноним 2021/03/11 09:18:22  №1963489 13
>>1963443

У тебя явно проблема при установке соединения с БД. Так как $link должен быть объектом, а не NULL. Покажи код установки соединения и сдампь, чему равна $link.
Ответы: >>1963580
Аноним 2021/03/11 11:06:11  №1963580 14
>>1963489
Всё стандартно

при этом кол работает если переменные заменить на циферки

$link = mysqli_connect('###', '###', '###', '###');
if (!$link) {
die('Could not connect: ' . mysqli_error());
}
echo 'Connected successfully<br>';

if(!empty($_SERVER['REMOTE_ADDR']) ){
$ip = $_SERVER['REMOTE_ADDR'];
}
else{
$ip = empty($_SERVER['HTTP_X_FORWARDED_FOR']) ? '' : $_SERVER['HTTP_X_FORWARDED_FOR'];
}

//mysqli_close($link);
Ответы: >>1963637
Аноним 2021/03/11 11:38:23  №1963637 15
>>1963580
Короче, ты в каком-то месте неожиданно обсираешься, тут гадать можно долго, потому что причина неочевидна и не в самой работе с бд. Ищи.
Ответы: >>1963639
Аноним 2021/03/11 11:41:27  №1963639 16
>>1963637
Где искать то? Это практический весь код который проблемный.
Ответы: >>1963641
Аноним 2021/03/11 11:44:03  №1963641 17
>>1963639
Сделай в две строчки.
conn = connect
query(conn, 'update table set hui=1 where id=1')
Должно сработать без вариантов. Потом смотри что отличается.
Ответы: >>1963697
Аноним 2021/03/11 12:47:04  №1963697 18
>>1963641
Так работает, а когда делаю чтобы вставлялось из переменных то перестает работать