插入数据到表(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文档,第一个参数必须是连接string:

 $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是保存上述代码中连接数据的variables。

好的,当然这个问题已经得到了解答,但似乎没人注意到代码的第三行。 它连续地窃听我。

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

由于某种原因,你build立了一个到服务器的mysqli连接,但是你试图build立一个到数据库的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')"); 

string值应该用引号引起来:

 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