Php mysqli fetch数组需要一个参数作为mysqli_结果
我的Php mysqli fetch数组需要一个参数作为mysqli_结果,php,html,mysql,Php,Html,Mysql,我的mysqli\u fetch\u array()有问题。code。我已经交换和更改了很多次变量,以找出它为什么不起作用。本质上,我需要它来访问我的数据库,找到符合特定条件的行数并返回值。关于如何让我的mysqli\u fetch\u array()函数工作,有什么见解吗 谢谢 <html> <?php $uname = ""; $pword = ""; $errorMessage = ""; function quote_smart($handle, $value) {
mysqli\u fetch\u array()有问题。
code。我已经交换和更改了很多次变量,以找出它为什么不起作用。本质上,我需要它来访问我的数据库,找到符合特定条件的行数并返回值。关于如何让我的mysqli\u fetch\u array()
函数工作,有什么见解吗
谢谢
<html>
<?php
$uname = "";
$pword = "";
$errorMessage = "";
function quote_smart($handle, $value) {
if (get_magic_quotes_gpc()) {
$value = stripslashes($value);
}
if (!is_numeric($value)) {
$value = "'" . mysqli_real_escape_string($handle, $value) . "'";
}
return $value;
}
if ($_SERVER['REQUEST_METHOD'] == 'POST'){
$uname = $_POST['username'];
$pword = $_POST['password'];
$uname = htmlspecialchars($uname);
$pword = htmlspecialchars($pword);
$con = mysqli_connect("127.0.0.1", "root", "");
$db = mysqli_select_db($con, "users");
if ($db) {
$uname = quote_smart($con, $uname);
$pword = quote_smart($con, $pword);
$SQL = "SELECT * FROM users WHERE L1 = $uname AND L2 = md5($pword)";
$result = mysqli_query($con, $SQL);
$num_rows = mysqli_fetch_array($result,MYSQLI_NUM);
if ($result) {
if ($num_rows > 0) {
session_start();
$_SESSION['login'] = "1";
header ("Location: home.php");
}
else {
session_start();
$_SESSION['login'] = "";
header ("Location: regpage.php");
}
}
else {
$errorMessage = "Error logging on";
}
mysqli_close($con);
}
else {
$errorMessage = "Error logging on";
}
}
?>
</html>
每次运行时,我都会收到以下错误消息:
警告:mysqli_fetch_array()要求参数1为mysqli_结果,给定布尔值
$SQL = "SELECT * FROM users WHERE L1 = '".$uname."' AND L2 = '".md5($pword)."'";
$result = mysqli_query($con, $SQL)or die(mysqli_error($connection));
$num_rows = mysqli_num_rows($result);
使用mysqli_error并传递连接作为其中的参数
$connection = mysqli_connect("localhost", "root", "", "stackoverflow");
$result = mysqli_query($connection, $SQL)or die(mysqli_error($connection));
测试代码
<?php
$uname = "";
$pword = "";
$errorMessage = "";
function quote_smart($handle, $value)
{
if (get_magic_quotes_gpc())
{
$value = stripslashes($value);
}
if (!is_numeric($value))
{
$value = "'" . mysqli_real_escape_string($handle, $value) . "'";
}
return $value;
}
if (isset($_REQUEST['submit']))
{
$uname = $_POST['username'];
$pword = $_POST['password'];
$uname = htmlspecialchars($uname);
$pword = htmlspecialchars($pword);
$con = mysqli_connect("localhost", "root", "","stackoverflow");
if ($con)
{
$uname = quote_smart($con, $uname);
$pword = quote_smart($con, $pword);
$SQL = "SELECT * FROM users WHERE username = ".$uname." AND password = ".$pword."";
$result = mysqli_query($con, $SQL);
$num_rows = mysqli_fetch_array($result,MYSQLI_NUM);
if ($result)
{
if ($num_rows > 0)
{
session_start();
$_SESSION['login'] = "1";
header ("Location: home.php");
exit;
}
else
{
session_start();
$_SESSION['login'] = "";
header ("Location: regpage.php");
exit;
}
}
else
{
$errorMessage = "Error logging on";
}
mysqli_close($con);
}
else
{
$errorMessage = "Error logging on";
}
}
?>
$num\u行=mysqli获取数组($result,mysqli\u num)代码>此结果是数据数组而不是行数
要获取行数,请使用mysqli\u num\u rows($result)
或
$num_rows=count(mysqli_fetch_数组($result,mysqli_num))代码>md5()是php函数,而不是mysql函数。在您的例子中,您使用它就像使用mysql函数一样。只需将您的查询替换为以下内容:
$SQL = "SELECT * FROM users WHERE L1 = $uname AND L2 = '".md5($pword)."' ";
当我尝试您的代码时,我得到了以下错误代码:“警告:mysqli_error()需要正好1个参数,0在中给出”您需要在其中传递连接字符串..@teepleb请参阅更新的答案。因此我将连接传递给它,现在我得到了:“警告:mysqli_num_rows()需要参数1为mysqli_result,布尔值在中给出”。我假设我需要传递一个INT?@teepleb,请确保将正确的连接传递到所有查询中。。
$SQL = "SELECT * FROM users WHERE L1 = $uname AND L2 = '".md5($pword)."' ";