mysqli_query至少需要2个参数

时间:2011-11-09 23:41:15

标签: php mysql mysqli

mysqli_query命令会导致错误

mysqli_query("INSERT INTO `counter`.`hits` (`page_hits`) VALUES ('".$hits."')"); 
  

“警告:mysqli_query()需要至少2个参数,1在”

中给出

此错误消息的含义是什么,以及如何修复?

6 个答案:

答案 0 :(得分:18)

您需要在页面前面的某个位置指定您对数据库的连接。你应该把这个变量放在查询中。假设你创建了一个名为$ con的变量。那么你的代码应该是这样的。

mysqli_query($con,"INSERT INTO `counter`.`hits` (`page_hits`) VALUES ('".$hits."')"); 

答案 1 :(得分:4)

来自manual

Procedural style

mixed mysqli_query ( mysqli $link , string $query [, int $resultmode = MYSQLI_STORE_RESULT ] )

您会注意到$link$query变量。

这意味着您需要将函数传递给有效的mysqli链接资源以及您要执行的查询。这使函数可以知道与服务器建立的连接使用。

可以使用以下方式创建链接资源:

  

仅程序样式:mysqli_connect()返回的链接标识符   或者mysqli_init()

以及如何操作的示例可以在上述手册页中找到。

答案 2 :(得分:3)

看来你把mysql_query与mysqli_query混淆了。前者接受sql语句作为第一个参数,而后者需要链接标识符(由Mysqli :: connect创建)作为第一个参数,语句作为第二个参数。

这两个扩展名彼此不兼容。我建议您选择一个,阅读有关如何连接,执行查询等的手册页,并忘记另一个存在。您选择哪一个取决于您,mysqli功能更丰富,但结果更复杂。

答案 3 :(得分:1)

mysqli_query除了2个参数,第一个变量是mysqli_connect等效变量,第二个是你提供的查询

$name1 = mysqli_connect(localhost,db_username ,db_pswd ,db_name );

$name2 = mysqli_query($name1,"INSERT INTO `counter`.`hits` (`page_hits`) VALUES ('".$hits."')");

答案 4 :(得分:1)

如果您遇到以下任何错误:

  

mysqli_query()至少需要2个参数,给定1个

     

mysqli_select_db()恰好需要2个参数

     

mysqli_real_escape_string()恰好需要2个参数

这意味着您尚未将必需参数传递给这些函数。 MySQLi过程样式函数期望第一个参数是有效的MySQLi连接链接。

例如,mysqli_query期望将数据库链接作为第一个参数,并将实际的SQL查询作为第二个参数。

假设您在脚本开始的某个位置具有此或类似的连接代码。

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = mysqli_connect($host, $user, $pass, $db);
mysqli_set_charset ($mysqli, 'utf8mb4');

您可以使用保存在$mysqli中的连接链接并将其作为第一个参数传递。

mysqli_query($mysqli, "INSERT INTO `counter`.`hits` (`page_hits`) VALUES ('".$hits."')"); 

大多数mysqli程序函数都要求将连接作为参数传递。但是,一个更简单的选择是切换到面向对象的样式。在OOP中,您可以在对象上调用仅传递SQL作为单个参数的方法。

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli($host, $user, $pass, $db);
$mysqli->set_charset('utf8mb4');

$mysqli->query("INSERT INTO `counter`.`hits` (`page_hits`) VALUES ('".$hits."')"); 

警告!

您应该使用参数化的准备好的语句,而不是手动构建查询。 mysqli_query()仅应在未将任何输入传递给SQL时使用。每当您要传递输入时,例如INSERT都必须使用参数绑定。您可以将mysqli_query()呼叫替换为:

$stmt = $mysqli->prepare('INSERT INTO `counter`.`hits` (`page_hits`) VALUES (?)');
$stmt->bind_param('s', $hits);
$stmt->execute();

答案 5 :(得分:-4)

<?php
include_once('insert.php');
if(isset($_POST['submit']))
{
     $name = $_POST['name'];
     $email = $_POST['email'];
     $address = $_POST['address'];
     $adm= $_POST['admission'];
    mysqli_query("INSERT INTO students_recrod(name,email,address,joining_date) VALUES ('$name', '$email','$address', '$adm')");
}
?>


<!DOCTYPE html>
<html>
<head>
    <title>Sign up form</title>
</head>
<body>
<form action="" method="post" id="">
<label>Name</label><br>
<input type="text" name="name" id=""><br>

<label>Email</label><br>
<input type="text" name="email" id=""><br>

<label>Address</label><br>
<input type="text" name="address" id=""><br>

<label>Admission date</label><br>
<input type="text" name="admission" id=""><br><br>

<input type="submit" name="submit" id="">
</form>
</body>
</html>