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 是字符串,数组给定错误

错误:date() 期望参数 2 很长,给定字符串

Laravel 5:in_array() 期望参数 2 是数组,给定对象

获取 PHP 错误警告:fputcsv() 期望参数 2 为数组

preg_grep() 期望参数 2 是数组,给定 null

move_uploaded_file() 期望参数 2 是有效路径,给定对象