но я не понимаю, что делаю не так и почему не работает?
Похоже, он подключается к БД, но не обновляет таблицу БД.
Мой код PHP
<?php
$host = 'localhost';
$db_name = 'db_name';
$db_user = 'user';
$db_password = 'password';
$con = mysqli_connect($host, $db_user, $db_password, $db_name);
if (!$con) {
die("Connection failed: " . mysqli_connect_error());
}
function _VoteReward($custom)
{
$sql = "UPDATE `users` SET `gold` = `gold` + 50000 WHERE `id` = '".$custom."' ";
mysqli_query($con, $sql);
}
$custom = $_POST["custom"];
$key = $_POST["key"];
$result = false;
if (($custom > 0) && ($key == 'key'))
{
$result = true;
_VoteReward($custom);
}
mysqli_close($con);
?>
Ваш сценарий подвержен риску Атака с использованием SQL-инъекции. Посмотрите, что случилось с Маленькие столики Бобби. Даже если вы избегаете ввода, это небезопасно!. Используйте подготовленные параметризованные операторы.
@JohnConde Ошибка отсутствует, если я уберу синтаксис функции и загружу файл, который работает. Но он не работает!
$con не входит в объем _VoteReward.
Спасибо @daceze, это была проблема






Приведенный выше код действительно создает соединение с базой данных. Однако полученное соединение нужно проверять на наличие ошибок. Обычно по следующему:
if (!$con)
{ // creation of the connection object failed
die("connection object not created: ".mysqli_error($con));
}
if (mysqli_connect_errno())
{ // creation of the connection object has some other error
die("Connect failed: ".mysqli_connect_errno()." : ". mysqli_connect_error());
}
Вы не знаете, что не так, потому что не проверяете ошибки в своем коде. Никогда не предполагайте, что код всегда будет работать безупречно. Используйте
mysqli_error(), чтобы получить подробное сообщение об ошибке из базы данных.