Я смотрел на этот код некоторое время, и я не вижу, где проблема. Я читал весь 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
за его значение.