mysql_select_db() 期望参数 2 是资源,给定 PHP 验证的对象
Posted
技术标签:
【中文标题】mysql_select_db() 期望参数 2 是资源,给定 PHP 验证的对象【英文标题】:mysql_select_db() expects parameter 2 to be resource, object given PHP validation 【发布时间】:2016-03-24 20:13:02 【问题描述】:我正在尝试使用 php 验证用户登录,但是我收到以下错误
警告:mysql_select_db() 期望参数 2 是资源、对象 在第 18 行的 C:\xampp\htdocs\db\sign_in_connect.php 中给出
警告:mysql_fetch_array() 期望参数 1 是资源, 第 22 行 C:\xampp\htdocs\db\sign_in_connect.php 中给出的布尔值 抱歉,您的凭据无效,请重试。
这是我的 PHP 代码
<?php
try
$db = mysqli_connect ('localhost', 'root', '', 'car_rental') or die ("SQL is Off");
catch (Exception $e)
echo "SQL is Off";
exit;
echo "success";
$email = $_POST["email"];
$pass = $_POST["pass"];
mysql_select_db("car_rental",$db);
$result = mysql_query("SELECT email, users FROM users WHERE email = $email");
$row = mysql_fetch_array($result);
if($row["email"]==$email && $row["pass"]==$pass)
echo"You are a validated user.";
else
echo"Sorry, your credentials are not valid, Please try again.";
?>
【问题讨论】:
在你的代码中混合mysql and mysqli
!!阅读php.net/manual/en/mysqli.select-db.php
您正在混合使用 mysqli_
和 mysql_
函数。因此使用较新的mysqli_
函数(或PDO
)。
你必须只需要使用一种方法mysql或mysqli...
停止使用mysql,因为它不安全。如果您有时间,请花时间将 PDO 理解为数据库连接器。 One tutorial
嗯,我正在学习 php 和 mysql,对此我比较陌生
【参考方案1】:
用这个替换你的代码。
<?php
try
$db = mysqli_connect ('localhost', 'root', '', 'car_rental') or die ("SQL is Off");
catch (Exception $e)
echo "SQL is Off";
exit;
echo "success";
$email = $_POST["email"];
$pass = $_POST["pass"];
mysqli_select_db($db,"car_rental");
$result = mysqli_query($db,"SELECT email, users FROM users WHERE email =$email");
//$row = mysql_fetch_array($result);
$row = $result->fetch_array(MYSQLI_ASSOC);
if($row["email"]==$email && $row["pass"]==$pass)
echo"You are a validated user.";
else
echo"Sorry, your credentials are not valid, Please try again.";
?>
【讨论】:
为什么要定义两次数据库。他已经在连接字符串中定义了数据库。就在这里:$db = mysqli_connect ('localhost', 'root', '', 'car_rental')
谢谢,但我现在收到此错误警告:mysqli_fetch_array() 期望参数 1 为 mysqli_result,布尔值在第 20 行的 C:\xampp\htdocs\db\sign_in_connect.php 中给出
您在这里的电子邮件中犯了同样的错误。
使用了这个 $row = $result->fetch_array(MYSQLI_ASSOC);以上是关于mysql_select_db() 期望参数 2 是资源,给定 PHP 验证的对象的主要内容,如果未能解决你的问题,请参考以下文章
preg_match() 期望参数 2 是字符串,数组给定错误
Laravel 5:in_array() 期望参数 2 是数组,给定对象
获取 PHP 错误警告:fputcsv() 期望参数 2 为数组