Intereting Posts
настроить mime-типы windows azure websites php app strcmp equivelant для целых чисел (intcmp) в PHP Как получить текст между тегами div с идентификатором 1-го атрибута. Только с регулярными выражениями. strtotime () выдает false в отформатированную дату Перенаправление на страницу и отправка пользовательских заголовков HTTP Почему я продолжаю получать ошибку 500 с моим PHP? Невозможно удалить специальные символы с помощью str_replace PHP – сравнение даты, проверка, если в течение последнего часа Как перетасовать мой массив или список строк более читабельным способом? PHP – объединить два массива (одинаковой длины) в один ассоциативный? PHP – создание оператора switch с использованием идентификатора из ввода формы Какие рамки вы предложите для сильной расширяемой платформы? Проблемы с вставкой строки utf-8 в базу данных, а затем вывод ее на веб-страницу Пользовательская маршрутизация URL с PHP и регулярным выражением Как установить файлы cookie в течение 20 минут и проверить, истек ли срок их действия

Mysqli выбрасывает «Warning: mysqli_stmt_bind_param () ожидает, что параметр 1 будет mysqli_stmt, boolean задан«

Возможный дубликат:
mysql_fetch_array () ожидает, что параметр 1 будет ресурсом, boolean задан в select

Я знаю, что этот код работает на другом сайте, который у меня есть, но сегодня он не играет в мяч. Я получаю три предупреждения:

Предупреждение: mysqli_stmt_bind_param () ожидает, что параметр 1 будет mysqli_stmt, boolean указан в /homepages/14/d248783986/htdocs/subdomains/clients.bionic-comms.co.uk/httpdocs/carefree/process.php в строке 33

Предупреждение: mysqli_execute () ожидает, что параметр 1 будет mysqli_stmt, boolean указан в /homepages/14/d248783986/htdocs/subdomains/clients.bionic-comms.co.uk/httpdocs/carefree/process.php в строке 34

Предупреждение: mysqli_stmt_affected_rows () ожидает, что параметр 1 будет mysqli_stmt, boolean указан в /homepages/14/d248783986/htdocs/subdomains/clients.bionic-comms.co.uk/httpdocs/carefree/process.php в строке 35

Может кто-нибудь помочь мне понять это?

Мне нужно использовать htaccess для обновления до PHP5, если это поможет.

$connection = mysqli_connect($hostname, $username, $password, $dbname); if (!$connection) { die('Connect Error: ' . mysqli_connect_error()); } $query = "INSERT INTO entries (name, dob, school, postcode, date) VALUES (?,?,?,?,?)"; $stmt1 = mysqli_prepare($connection, $query); mysqli_stmt_bind_param($stmt1, 'sssss',$name,$dob,$school,$postcode,$date); mysqli_execute($stmt1); if(mysqli_stmt_affected_rows($stmt1) != 1) die("issues"); mysqli_stmt_close($stmt1); return "new"; 

РЕДАКТИРОВАТЬ

После некоторого исследования выясняется, что оператор подготовки не играет в мяч с mysql4. Я создал новую базу данных mysql5, но теперь я получаю эту ошибку при попытке подключения:

Предупреждение: mysqli_connect () [function.mysqli-connect]: (HY000 / 2005): Неизвестный сервер MySQL-сервера «localhost: /tmp/mysql5.sock» (1)

Кто-нибудь знает, почему это происходит?

Solutions Collecting From Web of "Mysqli выбрасывает «Warning: mysqli_stmt_bind_param () ожидает, что параметр 1 будет mysqli_stmt, boolean задан«"

Добавьте больше обработки ошибок.
Когда соединение выходит из строя, mysqli_connect_error () может рассказать вам более подробную информацию.
При подготовке утверждения не получается mysqli_error () имеет больше информации об ошибке.
Когда выполнение инструкции не выполняется, задайте mysqli_stmt_error () . И так далее и дальше …
Каждый раз, когда функция / метод модуля mysqli возвращает false для указания ошибки, a) обрабатывает эту ошибку и b) решает, имеет ли смысл смысл или нет. Например, нет смысла продолжать работу с базой данных при сбое соединения. Но имеет смысл продолжать вставлять данные, когда одна вставка не удалась (может иметь смысл, может и нет).

Для тестирования вы можете использовать что-то вроде этого:

 $connection = mysqli_connect(...); if ( !$connection ) { die( 'connect error: '.mysqli_connect_error() ); } $query = "INSERT INTO entries (name, dob, school, postcode, date) VALUES (?,?,?,?,?)"; $stmt1 = mysqli_prepare($connection, $query); if ( !$stmt1 ) { die('mysqli error: '.mysqli_error($connection); } mysqli_stmt_bind_param($stmt1, 'sssss',$name,$dob,$school,$postcode,$date); if ( !mysqli_execute($stmt1) ) { die( 'stmt error: '.mysqli_stmt_error($stmt1) ); } ... 

Для реальной производственной среды этот подход позволяет говорить и умереть легко 😉

Проблема возникает из mysqli_prepare() , которая в вашем случае возвращает false , следовательно, имеет значение «boolean given». Поскольку ваш запрос выглядит нормально, ошибка должна быть в $connection . Вы уверены, что соединение работает и определено?

Соединение должно быть определено как нечто подобное:

 $connection = mysqli_connect("localhost", "my_user", "my_password", "world"); 

Если соединение определено правильно, вы можете использовать echo mysqli_connect_error() чтобы убедиться, что что-то пошло не так. Вы сказали, что код работает на другом сайте, поэтому, возможно, вы забыли изменить учетные данные или хост?