Задать вопрос

Почему не работает функция php?

Здравствуйте, подскажите почему данная функция не работает?

$mysqli = new mysqli($db_host, $db_user, $db_password, $db_name);

function SendNotice($p1, $p2) {
    global $mysqli;
    $row = mysqli_fetch_assoc(mysqli_query($mysqli, "SELECT `id` FROM `users` WHERE `login` = '$p1'"));
    if (!$row['id']) echo 'Ошибка!';
    mysqli_query($mysqli, "INSERT INTO `notifications` VALUES ('', $row[id], 0, NOW(), '$p2')");
}

Никакие ошибки не появляются.
  • Вопрос задан
  • 772 просмотра
Подписаться 4 Простой Комментировать
Ответ пользователя FanatPHP К ответам на вопрос (6)
FanatPHP
@FanatPHP
Чебуратор тега РНР
Этот вопрос надо задавать не в Спортлото, а своей базе данных.
Только она знает, почему запрос не выполняется.

Для этого надо правильно соединяться с mysqli.
Не одной строчкой, а указывая все нужные параметры. В частности режим отображения ошибок:
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
И тогда БД сможет тебе наконец сказать, что ей не так.

Если взять код mysqli.php по ссылке выше, то правильный, безопасный, и сообшающий о своих ошибках код будет таким
function SendNotice($conn, $p1, $p2) {
    $sql = "SELECT `id` FROM `users` WHERE `login` = ?";
    $row = prepared_query($mysqli, $sql, [$p1])->get_result()->fetch_assoc();
    if (!$row['id']) echo 'Ошибка!';
    $sql = "INSERT INTO `notifications` VALUES (null, ?, 0, NOW(), ?)";
    prepared_query($conn, $sql, [$row[id], $p2]);
}

И вызываться она должна так
include 'mysqli.php';
SendNotice($conn, 'test', 'Test text');
Ответ написан