尝试使用
连接到数据库$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
} else {
echo '.';
}
我得到了
Connection failed: Access denied for user '*'@'localhost' to database '*'
但如果我使用
$conn = mysqli_connect($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
} else {
echo '.';
}
它有效!是什么给了什么?
我之前使用过新的mysqli并且工作正常。我知道我的用户名/密码是对的。它的GoDaddy和我点击了所有权限。发生了什么事?
编辑:
运行此:
<?php
ini_set('display_errors',1);
error_reporting(E_ALL);
$servername = "localhost";
$username = "testuser";
$password = "testpassword";
$dbname = "testdb";
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$conn1 = mysqli_connect($servername, $username, $password, $dbname);
$conn2 = new mysqli($servername, $username, $password, $dbname);
var_dump($conn1->stat, $conn2->stat);
输出:
Fatal error: Uncaught exception 'mysqli_sql_exception' with message 'Access denied for user 'testuser'@'localhost' to database 'testdb'' in /home/public_html/wj-test.php:11
Stack trace:
#0 /home/public_html/wj-test.php(11): mysqli_connect('localhost', 'testuser', 'testpassword', 'testdb')
#1 {main} thrown in /home/public_html/wj-test.php on line 11
答案 0 :(得分:0)
使用您的常识。
你可能知道,这个世界没有魔法。因此,如果你面临一些奇怪的,不可能的行为,那就意味着要归咎于人为错误。
显然,你的一些前提是错的。最有可能的是,程序版本也不起作用。所以你必须测试它。而且,如果要问一个问题,提供一个可靠的代码,进行明显的测试。从你的措辞方式来看,你并没有做出并排比较。
为什么不编写变量定义,然后编写程序,然后编写OOP变体,然后立即运行它?
这是你应该做的,而不是产生一些推测或推测。
强大的错误报告而非钝die("Connection failed:
也有帮助。
<?php
ini_set('display_errors',1);
error_reporting(E_ALL);
$servername = "";
$username = "";
$password = "";
$dbname = "";
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$conn1 = mysqli_connect($servername, $username, $password, $dbname);
$conn2 = new mysqli($servername, $username, $password, $dbname);
var_dump($conn1->stat, $conn2->stat);
这是你必须在这里发布的一个明智的问题。 你看,逐字告诉我们你做了什么,发誓你看到的东西在编程中不起作用。只有一个代码。
因此,请运行此确切代码(当然设置您的凭据)并在此处复制并粘贴其输出。
答案 1 :(得分:0)
我遇到了完全相反的情况,即新的mysqli()对我有用,而mysqli_connect()失败了。我通过定义SQL Server的端口并将“ localhost”更改为“ 127.0.0.1”来解决此问题。
因此,在上述情况下,请尝试:
$.ajax({
type: 'GET',
url: "http://localhost/api/Piezas/Imagen/" + @Model.PiezaId,
contentType: "application/octet-stream",
success: function (datos) {
//$("#image").attr("src", "data:image/png;base64," + datos);
}
});
和/或
$dbport = 3307;
$conn = new mysqli($servername, $username, $password, $dbname, $dbport);
也许此问题与在Synology NAS上运行MySQL和PHP有关。
答案 2 :(得分:-1)
在这里,可能有两个问题:
登录root用户(超级用户)并检查mysql表以获取用户权限
答案 3 :(得分:-2)
帮助我的是将变量改为单引号......
$servername = 'localhost';
$username = 'testuser';
$password = 'testpassword';
$dbname = 'testdb';
// Create connection
$mysqli = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($mysqli->connect_error) {
die("Connection failed: " . $mysqli->connect_error);
}
else {
echo "Connected.";
}
$conn->close();