Предупреждение: mysqli_query() ожидает как минимум 2 параметра, 1 задан.

  • Автор темы mudrilo
  • 68
  • Обновлено
  • 12, May 2024
  • #1
Привет, я просто пытаюсь обновить (добавить 1) поле «receiptno» в «цифрах». таблицу и отобразите новый номер квитанции. В убыток ------------------------------------------------------- код:

//Открываем новое соединение с сервером MySQL

require_once "getprerentdb.php";

echo "

";echo date('m/d/y');

$id="id";

$receiptno = "receiptno +1";

$sql = "ОБНОВЛЕНИЕ чисел НАБОР

квитанция='$квитанция' Где id='".$_POST['id']."'";

mysqli_query($sql) или die(mysql_error());

echo "Запись для номера квитанции ".$_POST["квитанция"]." обновлена";

echo "Receiptno ".$_POST["Receiptno"]." ";

?> ----------------------------------------------------------------------------- ошибки: Примечание.

Неопределенный индекс: идентификатор в строке 8. Предупреждение: mysqli_query() ожидает как минимум 2 параметра, 1 из которых указан в строке 9. Неустранимая ошибка: неперехваченная ошибка: вызов неопределенной функции mysql_error() в строке 9.

mudrilo


Рег
25 Aug, 2011

Тем
1

Постов
4

Баллов
14
  • 21, May 2024
  • #2
Первая ошибка: появляется неопределенный индекс, поскольку в вашем массиве $_POST нет опубликованного поля «id». Проверьте свою HTML-форму и убедитесь, что у вас есть что-то вроде этого:

или

Часть 'name="id"' является важной частью.

Вторая ошибка возникает, потому что вы не передаете ссылку на подключение к базе данных функции mysqli_query.

Должен быть:

mysqli_query($conn, $sql);

$conn должна быть ссылкой для подключения, созданной включенным в ваш PHP-файл getprerentdb.php.

Переменную можно назвать как-нибудь по-другому, проверьте файл, чтобы узнать, что у них есть.

Последняя ошибка возникает из-за того, что расширение MySQL не загружено.

Не обязательно. Измените эту строку на: умереть (mysqli_error()); В этом коде у вас отсутствует «Я».
 

Марина Хоменко


Рег
12 Apr, 2011

Тем
0

Постов
3

Баллов
3
  • 21, May 2024
  • #3
Я не использую mysqli, поэтому пришлось проверить документацию у вас есть
 mysqli->query($sql) or die(mysqli_error());
PHP: вам нужно
 mysqli_query($sql) or die(mysql_error());
PHP: ссылка: https://www.php.net/manual/en/mysqli.query.php
 

Ilga Ilga


Рег
27 Feb, 2013

Тем
0

Постов
1

Баллов
1
  • 21, May 2024
  • #4
Где ваш объект соединения SQL? Первым параметром устаревшей версии, основанной на функции STOP USING IT NOW, должен быть объект, который вы создали при запуске mysqli_connect.

И нет, гадить в filter_input тоже не лучший ответ, им следует использовать модель подготовки/выполнения!

Конечно, наличие тега

disphit, которого не было в «настоящем» HTML с 1997 года, отсутствие htmlspeicalchars и т. д. и т. п. указывает на 20-летнюю практику написания кода.

Дайте угадаю, пытаетесь обновить устаревший и сломанный ****-шторм для работы на современных PHP-движках? Угадывание ДИКОЕ (непроверено, могут быть опечатки)
 

<?php

//Open a new connection to the MySQL server

require_once('getprerentdb.php');

// assuming the SQL connection is called $db

echo '<time>', date('m/d/y'), '</time>';

$stmt = $db->prepare('

UPDATE numbers

SET receiptno = recieptno + 1

WHERE id = ?

');

$stmt->bind_param("i", $_POST['id']);

$stmt->execute();

if ($stmt->num_rows) {

echo 'Record for receiptno ', htmlspecialchars($_POST["receiptno"]), ' has been updated';

} else {

echo 'Invalid ID ', htmlspecialchars($_POST["receiptno"]), ' or other error occurred!';

}

Код (разметка): Опять же, mysqli не обеспечивает глобальное соединение, как устаревший mysql_ мусор.

и серьезно сделайте себе одолжение и откажитесь от версии mysqli с функцией мусора.

Черт, сделайте себе НАСТОЯЩЕЕ одолжение и переключитесь на PDO.
 

garf1


Рег
12 Sep, 2013

Тем
0

Постов
2

Баллов
2
  • 01, Jun 2024
  • #5
Спасибо за вашу щедрую помощь, просто делаю это, чтобы сохранить серое вещество.

У тебя было "$dbname", и я подумал пароль не требуется, а значение ROOT установлено по умолчанию.

Мне нравится код, но 2 понял, 2 работает.

================================

это текущий код:

$host = 'локальный хост';

$dbname = 'prerentdb';

$db=mysqli_connect($host,'$dbname');

если(!$дб)

{ die('Не удалось подключиться к серверу MySql:' .mysql_error()); }

echo '', date('m/d/y'), '';

$stmt = $db->prepare('

ОБНОВИТЬ номера

SET номер квитанции = номер квитанции + 1

ГДЕ идентификатор = ?

');

$stmt->bind_param("i", $_POST['id']); // Вызов функции-члена bind_param() для bool в

$stmt->выполнить();

если ($stmt->num_rows) {

echo 'Запись для номера квитанции', htmlspecialchars($_POST["receiptno"]), 'обновлена';

} еще {

echo 'Неверный идентификатор', htmlspecialchars($_POST["receiptno"]), 'или произошла другая ошибка!';

}

?>
 

alarmtraff


Рег
08 Apr, 2012

Тем
0

Постов
1

Баллов
1
  • 01, Jun 2024
  • #6
Посмотрите внимательно на эти две строки
 $receiptno = 'receiptno';
echo "$receiptno"; echo "<br />"; // prints "receiptno"
PHP: вы присваиваете переменной $receiptno строковое значение.
 

Wwwlep


Рег
16 Jul, 2013

Тем
0

Постов
3

Баллов
3
  • 03, Jun 2024
  • #7
Mysqli ожидает прохождения соединения с базой данных.
 $sql = "UPDATE numbers SET
receiptno='$receiptno' Where id='".$_POST['id']."'";
PHP: следует использовать filter_input, чтобы гарантировать, что не будут переданы неверные значения. ссылка: https://www.php.net/manual/en/function.filter-input.php
 

iPROsrv


Рег
06 Dec, 2012

Тем
1

Постов
4

Баллов
14
  • 04, Jun 2024
  • #8
 <?php

$host='localhost';

$username='root';

$password='';

$dbname = "prerentdb";

$db=mysqli_connect($host,$username,$password,"$dbname");

if(!$db)

{ die('Could not Connect MySql Server:' .mysql_error()); }

echo '<time>', date('m/d/y'), '</time>';

$stmt = $db->prepare('

UPDATE numbers

SET receiptno = recieptno + 1

WHERE id = ?

');

$stmt->bind_param("i", $_POST['id']); // Call to a member function bind_param() on bool in

$stmt->execute();

if ($stmt->num_rows) {

echo 'Record for receiptno ', htmlspecialchars($_POST["receiptno"]), ' has been updated';

} else {

echo 'Invalid ID ', htmlspecialchars($_POST["receiptno"]), ' or other error occurred!';

}

?>
PHP:
 

syava333


Рег
28 Jul, 2010

Тем
1

Постов
2

Баллов
12
  • 04, Jun 2024
  • #9
Ответ @sarahk должен решить фатальную ошибку. В строке 8 у вас есть $_POST['id']. Это неопределенное уведомление означает, что идентификатор не существует в переменной $_POST. Чтобы проверить, напечатайте переменную $_POST следующим образом: print_r($_POST)
 

FFFoXXX


Рег
17 May, 2014

Тем
0

Постов
2

Баллов
2
  • 04, Jun 2024
  • #10
Привет, Это должно исправить это:
 <?php

//Open a new connection to the MySQL server

require_once "getprerentdb.php";

echo "<center>";echo date('m/d/y');

$id= isset($_POST['id']) ? htmlentities($_POST['id']) : '';

$receiptno = isset($_POST["receiptno"]) ? htmlentities($_POST["receiptno"]) : '';

$sql = "UPDATE numbers SET receiptno = receiptno+1 Where id='".$id."'";

mysqli_query($sql) or die(mysqli_error());

echo "Record for receiptno $receiptno has been updated";

echo "receiptno $receiptno";

?>
PHP:
 

saskezas


Рег
06 May, 2012

Тем
1

Постов
4

Баллов
14
  • 11, Jun 2024
  • #11
Мой код делает то, что я хочу, кроме печати квитанции в отчете. Я ищу, но не нахожу примера для этого.

Пожалуйста ---------------------------------------------- код: $link = mysqli_connect("localhost", "root", "", "prerentdb"); // Проверьте подключение if($link === false){ die("ОШИБКА: Не удалось подключиться.

" . mysqli_connect_error()); }

echo "

";echo date('m/d/y'); эхо "

";

$id='id';

$Receiptno = 'Receiptno';

эхо "$чекно"; эхо "

"; // печатает "чек нет"

$sql = " ОБНОВЛЕНИЕ чиселstbl

SET номер квитанции = номер квитанции + 1 где id=$id ";

if(mysqli_query($link, $sql)){ echo "Номер квитанции был успешно обновлен."; }

else { echo "ОШИБКА: не удалось выполнить $sql.

" . mysqli_error ($ ссылка); } // Закрываем соединение mysqli_close($ссылка); ?>
 

specar


Рег
08 Aug, 2014

Тем
1

Постов
3

Баллов
13
Тем
49554
Комментарии
57426
Опыт
552966

Интересно