Intereting Posts
Facebook SDK вернул ошибку: проверка подделки на основе перекрестного запроса не удалась. Параметр «состояние» из URL-адреса и сеанса не соответствует Могу ли я использовать автономный уровень базы данных Laravel? Создание тега по умолчанию из пустого значения генерируется, когда тег отсутствует. Как разрешить? PHP. На основе того, на какой странице я включен, измените активный класс как безопасно $ _SERVER ? Как заменить некоторые части моей строки? Как вызвать функции winapi из PHP? Возможно ли иметь $ _SESSION = $ _POST? php, mysqli-stmt.bind-param]: Число элементов в строке определения типа не совпадает с числом переменных привязки PHP Mail приводит к ошибке: «заголовок отсутствует» Разделение электронной почты и Интернета на разных серверах: отправьте письмо через PHP на адрес электронной почты в этом домене Доступ к комментариям поля MySQL к PHP Получать интервал между двумя датами в PHP? Удалить фона Parallax на тему brooklyn Специальные символы в UTF8 mailto: subject = link и Outlook

Вставка данных в таблицу (вставка mysqli)

Я смотрел на этот код некоторое время, и я не вижу, где проблема. Я читал весь StackOverflow и до сих пор не вижу, где моя ошибка.

<?php mysqli_connect("localhost","root","","web_table"); mysql_select_db("web_table") or die(mysql_error()); if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); } echo "<p> Connection Successful!" mysqli_query('INSERT INTO web_formitem (ID, formID, caption, key, sortorder, type, enabled, mandatory, data) VALUES (105, 7, Tip izdelka (6), producttype_6, 42, 5, 1, 0, 0)'); echo "<p>Insert successfull"; ?> 

Ошибка находится где-то в строке 13, то есть mysqli_query('insert... . Я пытался помочь себе с http://www.w3schools.com/php/php_mysql_insert.asp, но это не очень помогает мне.

Предупреждение: никогда не обращайтесь к w3schools для учебных целей. У них так много ошибок в их учебниках.

Согласно документации mysqli_query , первым параметром должна быть строка подключения:

 $link = mysqli_connect("localhost","root","","web_table"); mysqli_query($link,"INSERT INTO web_formitem (`ID`, `formID`, `caption`, `key`, `sortorder`, `type`, `enabled`, `mandatory`, `data`) VALUES (105, 7, 'Tip izdelka (6)', 'producttype_6', 42, 5, 1, 0, 0)") or die(mysqli_error($link)); 

Примечание. Добавьте обратные ссылки `для имен столбцов в вашем запросе вставки, поскольку некоторые из ваших имен столбцов являются зарезервированными словами.

В mysqli_query (первый параметр должен быть соединением, ваш оператор sql), поэтому

 $connetion_name=mysqli_connect("localhost","root","","web_table") or die(mysqli_error()); mysqli_query($connection_name,'INSERT INTO web_formitem (ID, formID, caption, key, sortorder, type, enabled, mandatory, data) VALUES (105, 7, Tip izdelka (6), producttype_6, 42, 5, 1, 0, 0)'); 

но наилучшей практикой является

 $connetion_name=mysqli_connect("localhost","root","","web_table") or die(mysqli_error()); $sql_statement="INSERT INTO web_formitem (ID, formID, caption, key, sortorder, type, enabled, mandatory, data) VALUES (105, 7, Tip izdelka (6), producttype_6, 42, 5, 1, 0, 0)"; mysqli_query($connection_name,$sql_statement); 

При использовании функций php mysqli помните, что сначала указываются сведения о соединении, затем запрос передается в функции

 $cid=mysqli_connect("server", "username", "password", "database_name") or die (mysql_error()); mysqli_query($cid, $query) or die (mysqli_error($cid)); $result=mysqli_affected_rows($cid); if($result===TRUE) echo"The query ran successfully"; else echo"The query did not run"; mysqli_close($cid); 

Имейте в виду, что $ cid – это переменная, которая содержит данные соединения в приведенных выше кодах.

Хорошо, конечно, на вопрос был дан ответ, но никто, кажется, не заметил третью строку вашего кода. Это продолжало меня беспокоить.

  <?php mysqli_connect("localhost","root","","web_table"); mysql_select_db("web_table") or die(mysql_error()); 

по какой-то причине вы подключили mysqli к серверу, но вы пытаетесь подключиться к базе данных mysql. Чтобы перейти, скорее используйте

  $link = mysqli_connect("localhost","root","","web_table"); mysqli_select_db ($link , "web_table" ) or die..... 

или где я начал

  <?php $connection = mysqli_connect("localhost","root","","web_table"); global $connection; // global connection to databases - kill it once you're done 

или просто запрос с параметром $ connection в качестве другого аргумента, как указано выше. Избавься от этой третьей линии.

Как насчет этого?

 mysqli_query("INSERT INTO `web_formitem` (`ID`, `formID`, `caption`, `key`, `sortorder`, `type`, `enabled`, `mandatory`, `data`) VALUES ('105', '7', 'Tip izdelka (6)', 'producttype_6', '42', '5', '1', '0', '0')"); 

Значения строк должны быть записаны в кавычки:

 mysqli_query('INSERT INTO web_formitem (ID, formID, caption, key, sortorder, type, enabled, mandatory, data) VALUES (105, 7, "Tip izdelka (6)", "producttype_6", 42, 5, 1, 0, 0)'); 

Кстати, если вы начинаете с mysql, вы должны использовать PDO ( http://php.net/manual/de/class.pdo.php )

 mysqli_query('INSERT INTO web_formitem (ID, formID, caption, key, sortorder, type, enabled, mandatory, data) VALUES ('105', '7', 'Tip izdelka (6)', 'producttype_6', '42', '5', '1', '0', '0')'); 

если один из ваших столбцов, таких как ID является автоинкрементным, вы не должны назначать ему значение. просто поместите NULL за его значение.