警告:mysqli_select_db()需要2个参数,1在C:中给出

时间:2014-10-27 20:03:41

标签: php mysql mysqli

我正在做一个教程,其中作者没有更新他的内容以反映PHP文档中的更改。无论如何,我需要知道我要提供的参数是什么。我已经检查过所有事情都是有序的,但我确实不知道我应该提供什么。这就是我所拥有的:

Connects.php

<?php
$connect_error = 'Sorry, we\'re experiencing connection issues.';
$con = mysqli_connect('localhost', 'root', 'PwdSQL5');
mysqli_select_db('phpcadet') or die($connect_error);
?>

然而我收到错误:enter image description here

编辑:在确定要解决Connects.php问题之后,这就是为什么我修复它的原因...更多错误,这是我的代码。请记住,我是PHP的新手,并且正在完成一个做得不好的教程。

警告: mysqli_real_escape_string()要求参数1为mysqli,第4行的C:\ vhosts \ phpcadet \ core \ functions \ general.php中给出的字符串

General.php

<?php
function sanitize($data)
{
return mysqli_real_escape_string($data, 'What goes here?');
}
?>

然后:警告:mysqli_query()要求参数1为mysqli,第7行的C:\ vhosts \ phpcadet \ core \ functions \ users.php中给出的字符串

Users.php

<?php
require 'core/database/connects.php';

function user_exists($username)
{
  $username = sanitize($username);
  $query = mysqli_query($_POST['username'], "SELECT * FROM users");
  $row = mysqli_fetch_array($query);

  if($row['username']==$username)
  {
     echo "Welcome, $username!";
     return true;   
  }
  else echo "Please enter a valid username and password";
  return false;
}   

function user_active($username)
{
  $username = sanitize($username);
  $query = mysqli_query($_POST['username'], "SELECT * FROM users");
  $row = mysqli_fetch_array($query);

  if($row['username']==$username && $row['active']==1)
  {
     echo "Welcome, $username!";
     return true;   
  } 
  else echo "Your username and password could not be verified.";
  return false;
  }
 ?>

最后这个:警告:mysqli_fetch_array()要求参数1为mysqli_result,在第8行的C:\ vhosts \ phpcadet \ core \ functions \ users.php中给出null

请参阅上面的相同代码

我的一些代码是解决课程问题的其他答案的汇编,并在Stack上找到。由于它们的不一致性,这让我很难接受正在发生的事情......来自不同的语言,我不熟悉这里,只需要帮助,所以点击它。然后我就会理解&#34;本手册的内容。感谢。

2 个答案:

答案 0 :(得分:19)

mysqli_select_db()应该包含 2 参数,连接链接和数据库名称 -

mysqli_select_db($con, 'phpcadet') or die(mysqli_error($con));

在die语句中使用mysqli_error将告诉您完全错误而不是一般错误消息。

答案 1 :(得分:1)

此错误消息告诉您需要提供 mysqli 连接对象作为 mysqli_select_db() 函数的第一个参数。大多数 mysqli 函数在以过程式风格使用时都需要 mysqli 对象。

{% for priority in priorities.forms %}
  <tr>
    <td>
      {{ priority.priority.errors.as_ul }}
      {% for value, name in priority.priority.field.choices %}
        {% if value == priority.priority.value %}
          {{ name }}
        {% endif %}
      {% endfor %}
      {{ priority.priority.as_hidden }}
    </td>
    <td>
      {{ priority.score.errors.as_ul }}
      {{ priority.score }}
    </td>
  </tr>
{% endfor %}

但是,您根本不需要使用 mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); $con = mysqli_connect('localhost', 'root', 'PwdSQL5'); mysqli_select_db($con, 'phpcadet') // ^^^^ - pass the $con object from the line above 。您可以将数据库名称作为第四个参数传递给 mysqli_connect() 函数。你只需要这个:

mysqli_select_db()