当我按照w3school的教程操作时,为什么会出现错误?

13

我已经看了这段代码有一段时间了,但是我找不到问题出在哪里。我已经阅读了整个 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来帮助自己,但没有帮我太多。


mysql_select_db在做什么?你正在使用mysqli对吧?它什么也不做。 - Bere
这回答了您的问题吗?mysqli_query 期望至少2个参数 - Dharman
将以下代码行从mysql改为mysqli:mysql_select_db("web_table") or die(mysql_error());修改为:mysqli_select_db("web_table") or die(mysqli_error()); - Syed Naeem Tariq
3个回答

32

警告: 绝不能使用 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)");

注意: 在插入查询中,对于一些保留字作为列名的情况,请用反引号 (`) 添加到列名上。


问题仍然在同一行代码中 (mysqli_query..),并且它没有解决问题。感谢关于w3的建议。 - Blue
二进制?你能具体说明一下吗? - Blue
@Blue - 抱歉我忘记在语句末尾加一个 )。请参考这段代码 http://pastebin.com/XdYU3Guw - Rikesh
这里有一个问题;mysqli_query($link,"INSERT INTO vranesic_formitem (ID, formID, caption, key, sortorder, type, enabled, mandatory, data) ( ! ) Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in C:\wamp\www\bilform\insert.php on line 12 - Blue
1
@Blue - 实际上,在上面的mysqli_query语句后,你漏掉了; - Rikesh
显示剩余6条评论

2
在mysqli_query中,第一个参数应该是连接(connection),第二个参数是你的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);

您出现了一个错误。mysqli_error()需要一个参数。请考虑改为打开错误模式。如何在MySQLi中获取错误消息? - Dharman

-1

好的,当然问题已经得到了回答,但似乎没有人注意到你代码的第三行。它一直让我感到困扰。

    <?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参数作为其他参数查询,就像上面那样。 摆脱那第三行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接