PHP 访问被拒绝
Posted
技术标签:
【中文标题】PHP 访问被拒绝【英文标题】:PHP Access Denied 【发布时间】:2016-01-24 07:00:02 【问题描述】:我正在尝试将我的数据库连接到我的在线网站,但我的代码不断收到这些错误。
警告:mysqli_connect() [function.mysqli-connect]: (28000/1045): 用户 'DatabaseName'@'28.5.2.24' 的访问被拒绝(使用密码: 是)在第 2 行的 /home/user/public_html/getTemps.php 中
和错误:
致命错误:函数名必须是字符串 /home/username/public_html/getTemps.php 在第 3 行
这是我所有的代码:
<?php
$con=mysqli_connect("localhost", "databasename", "password!", "tablename");
$result = $mysqli_query($con, "Selcect * From tablename");
$data = fetch_all($result, MySQLI_ASSOC);
echo json_encode( $data );
?>
【问题讨论】:
$mysqli_query
?还有什么是fetch_all
?我不确定mysqli_connect
中的最后一个参数是什么,如果它是数据库名称,我想知道为什么它被称为 tablename。
首先,“Select”这个词有错别字
它是一个来自 php 的 SQL 查询,另一行抓取结果并以某种格式返回
最后一个参数是数据库中的表名
查看文档:php.net/manual/en/mysqli.construct.php 您需要按正确的顺序提供正确的参数。
【参考方案1】:
<?php
$con=mysqli_connect("localhost", "databasename", "password!", "tablename");
$result = $mysqli_query($con, "Selcect * From tablename");
$data = fetch_all($result, MySQLI_ASSOC);
echo json_encode( $data );
?>
把上面的改成这样:
<?php
$con=mysqli_connect("localhost", "username", "password!","databasename");
$sql = "SELECT * FROM tablename";
$result = mysqli_query($con,$sql);
$data = fetch_all($result, MySQLI_ASSOC);
echo json_encode( $data );
?>
如果你想这样连接,我不建议定义:主机、用户名、密码(如果设置)和数据库名称。表名是可选的,但是当您在查询中定义时,不必在连接字符串中定义它。(我确实建议您按照 eddie 所说的方式将所有连接字符串信息放入变量中。因为它是更容易使用。)
至于查询,拼写错误“Select”需要为SELECT
。
【讨论】:
【参考方案2】:不推荐连接到数据库的方法,因为它看起来很乱。请在开始之前更改您的“选择”。请阅读文档,因为没有名为“fetch_all”的函数。有一个,但称为“mysqli_fetch_all”。
我推荐你使用的是这个
$HOST = '';
$USERNAME = '';
$PASSWORD = '';
$DB = ''; //Your database name
$link = mysqli_connect($HOST, $USERNAME, $PASSWORD, $DB);
if (!$link)
//your error message
//Start of your query
【讨论】:
以上是关于PHP 访问被拒绝的主要内容,如果未能解决你的问题,请参考以下文章
PHP的用户'root'@'localhost'访问被拒绝(使用密码:否)[重复]
PHP apache错误:用户'jobportal'@'localhost'的访问被拒绝(使用密码:是)
PHP Laravel:用户'homestead'@'localhost'的访问被拒绝(使用密码:YES)
PHP和MySQLi错误-用户'root'@'localhost'的访问被拒绝(使用密码:否)[重复]