插入数据到表(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
。