@Donjer

Не могу решить проблему с синтаксисом sql?

Не могу решить такую проблему:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '["login"]}' at line 1

Вот код:
<?php

require_once 'vendor/connect.php';

$query = mysqli_query($connect, 'SELECT * FROM `users` WHERE login = {$_SESSION["login"]}');
if(!$query){ die(mysqli_error($connect)); }
$balance = mysqli_fetch_assoc($query);
echo $balance['balance'];

if(isset($_POST['click'])) {
mysqli_query($connect, 'UPDATE `users` SET `balance`="'.$balance['balance'].'"+"0.001" WHERE login = {$_SESSION["login"]}');

}

?>
  • Вопрос задан
  • 127 просмотров
Решения вопроса 1
rozhnev
@rozhnev Куратор тега PHP
Fullstack programmer, DBA, медленно, дорого
Можно так:
<?php

require_once 'vendor/connect.php';

$login = mysqli_real_escape_string($connect, $_SESSION["login"]);

$query = mysqli_query($connect, "SELECT * FROM `users` WHERE login = '$login'");

$balance = mysqli_fetch_assoc($query);

echo 'Balance:' . $balance['balance']. PHP_EOL;

if(isset($_POST['click'])) {
	mysqli_query($connect, "UPDATE `users` SET `balance`=`balance`+0.001 WHERE login = '$login'");
	echo 'New balance:' . ($balance['balance'] + 0.001) . PHP_EOL;
}

?>


Share PHP code online

А лучше так:

<?php

require_once 'vendor/connect.php';

/* prepare statement */
$stmt = $connect->prepare("SELECT `balance` FROM `users` WHERE login = ? ");

/* bind parameters for login */
$stmt->bind_param("s", $_SESSION["login"]);

/* execute query */
$stmt->execute();

$stmt->bind_result($balance);

/* fetch value */
$stmt->fetch();

/* free result to next use */
$stmt->free_result();

echo 'Balance:' . $balance . PHP_EOL;

if (isset($_POST['click'])) {

	/* prepare statement */
	$stmt = $connect->prepare("UPDATE `users` SET `balance`=`balance`+0.001 WHERE login = ? ");

	/* bind parameters for login */
	$stmt->bind_param("s", $_SESSION["login"]);

	/* execute query */
	$stmt->execute();

	echo 'New balance:' . ($balance['balance'] + 0.001) . PHP_EOL;
}

?>


Test PHP code online
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
SagePtr
@SagePtr
Еда - это святое
Проблема не только с синтаксисом SQL, а с тем, что вы не различаете одинарные кавычки и двойные в PHP
https://www.php.net/manual/ru/language.types.string.php
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы