我正在做一个教程,其中作者没有更新他的内容以反映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);
?>
然而我收到错误:
编辑:在确定要解决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;本手册的内容。感谢。
答案 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()