此mysqli_query
命令会导致错误
mysqli_query("INSERT INTO `counter`.`hits` (`page_hits`) VALUES ('".$hits."')");
“警告:mysqli_query()需要至少2个参数,1在”
中给出
此错误消息的含义是什么,以及如何修复?
答案 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>