Hexagon14
@Hexagon14
Начинающий программист-энтузиаст

Почему не передаётся переменная из PHP в MySQL?

Имею базу данных из CMS под названием DLE, в ней таблица dle_users, в которой находятся строки name и user_balance, в user_balance находится баланс пользователя и я проверяю выше ли он цены, если да то я вычитаю из баланса цену и отправляю это значение в бд. Но почему-то значение в бд не изменяется, но если передавать не переменную а текст или цифру все меняется. Попрошу не бить за кривой код или затупы, 2 неделю живу эти пхп и бд..

Проблема в том что я не могу проверить строку name на наличие переменной $user, я просто получаю ошибку
Fatal error: Uncaught mysqli_sql_exception: Unknown column 'Hexagon' in 'where clause'

PHP код:
<?php
$dblink = mysqli_connect('localhost', 'hexagon', 'password', 'hex-server'); // Соединяемся с базой
//$user = $member_id['name'];
$user = 'Hexagon';
$allow_to_buy = 0;
$current_monets = 0;
$price = 1;
$sql = mysqli_query($dblink, 'SELECT `name`, `user_balance` FROM `dle_users`');
  while ($result = mysqli_fetch_array($sql)) 
  {
	  if ($result['name'] == $user)
	  {
		echo $result['name'];
		$current_monets = $result['user_balance'];
		echo $current_monets;
	  }
  }
  if ($current_monets >= $price)
		{
			$allow_to_buy = 1;
			echo 'Покупка совершена!';
			$current_monets-=$price;
			echo $current_monets;
			mysqli_query($dblink, 'UPDATE `dle_users` SET `user_balance` = '.$current_monets.' WHERE `name` = '.$user.'');
			$sql2 = mysqli_query($dblink, 'SELECT `name`, `user_balance` FROM `dle_users`');
			while ($result = mysqli_fetch_array($sql2)) {
				echo '<br>';
				echo $result['name'];
				echo $result['user_balance'];
			}
		}
		else
			echo 'Недостаточно монет';
?>
  • Вопрос задан
  • 880 просмотров
Решения вопроса 1
Hexagon14
@Hexagon14 Автор вопроса
Начинающий программист-энтузиаст
В итоге взял из дб информацию из поля user_id и просто присвоил её к переменной $id и когда изменял информацию в бд сделал так:
mysqli_query($dblink, 'UPDATE `dle_users` SET `user_balance` = '.$current_monets.' WHERE `user_id` = '.$id.'');


Почему-то оно не хотело сравнивать текст..
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@vism
почитайте о разнице между одинарными и двойными кавычками.
Ответ написан
@Vitsliputsli
mysqli_query($dblink, 'UPDATE `dle_users` SET `user_balance` = '.$current_monets.' WHERE `name` = '.$user.'');

Fatal error: Uncaught mysqli_sql_exception: Unknown column 'Hexagon' in 'where clause'

В SQL текстовые значения необходимо заключать в кавычки.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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