$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')");
}
Ни каких ошибок не появляется.Это не говорит о том что их нет. Для отладки на дев окружении должны быть включены выводы всех нотисов и варнингов, либо через конфиг php.ini, либо в коде при старте указать
ini_set('error_reporting', E_ALL);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
SendNotice('test', 'Test text');
function SendNotice($p1, $p2) {
var_dump($p1);
var_dump($p2);
global $mysqli;
var_dump($mysqli);
$sql = "SELECT `id` FROM `users` WHERE `login` = '$p1'";
var_dump($sql);
$row = mysqli_fetch_assoc(mysqli_query($mysqli, $sql));
var_dump($row);
if (!$row['id']) echo 'Ошибка!';
$sql = "INSERT INTO `notifications` VALUES ('', $row[id], 0, NOW(), '$p2')";
var_dump($sql);
mysqli_query($mysqli, $sql);
}
Еще заметил, что скрипту все ровно какое название у таблицы с оповещениями ошибку все равно не показываетскорее всего мускуль подключается в нестрикт моде, и все ошибки давятся на уровне драйвера.
К тому же если в таблице notifications первое поле 'id' с типом integer то ошибка очевидна, передается пустая строка вместо числа.скорее всего это поле автоинкремент и будет заполняться автоматически, если это не так - то во первых таблица построена неправильно, а во вторых - запрос выдаст ошибку если вставить в консоль руками.