Php 脚本不是';无法正确发送登录信息
大约一个小时前,我刚开始编写自己的脚本,我遇到了一个错误,我不确定如何修复,似乎除了用户名之外,所有内容都在正确解析,出于某种原因,当我执行PHP table create脚本时,它不是从config.PHP解析用户名,而是在执行没有用户名的脚本 我将代码放在phpcodechecker.com/上,它没有给我任何东西,甚至没有任何警告,这让我非常困惑,代码对我来说很好,但我在这方面非常新手,所以我可能错过了一些重大的东西,任何帮助都将不胜感激 为什么这段代码在尝试连接时不将用户名解析为createtable.php 有问题的代码片段; 堆栈格式化代码块的方式让我非常困惑,所以我只使用pastebinPhp 脚本不是';无法正确发送登录信息,php,send,details,Php,Send,Details,大约一个小时前,我刚开始编写自己的脚本,我遇到了一个错误,我不确定如何修复,似乎除了用户名之外,所有内容都在正确解析,出于某种原因,当我执行PHP table create脚本时,它不是从config.PHP解析用户名,而是在执行没有用户名的脚本 我将代码放在phpcodechecker.com/上,它没有给我任何东西,甚至没有任何警告,这让我非常困惑,代码对我来说很好,但我在这方面非常新手,所以我可能错过了一些重大的东西,任何帮助都将不胜感激 为什么这段代码在尝试连接时不将用户名解析为crea
这是因为您在
config.php
中混合了mysqli
和mysql
api,它们最终完全没有连接
mysqli_connect($db_hostname, $db_username, $db_password)
mysql_select_db($db_database)
要使用mysqli扩展到数据库的正确连接(使用mysqli显然更好,因为不推荐使用mysql.*
函数),请执行以下操作:
$mysqli = new mysqli('localhost', 'fake_user', 'my_password', 'my_db');
if ($mysqli->connect_errno) {
die('Connect Error: ' . $mysqli->connect_errno);
}
你可以查一下
我想补充一点,您可以在任何其他需要连接的脚本中使用来自config.php
的连接
require('config.php');
因此,您的createables.php
将如下所示
require("config.php");
$sql="CREATE TABLE quoter (
id int NOT NULL AUTO_INCREMENT,
quote text NOT NULL,
quoteby CHAR(50) NOT NULL,
PIMARY KEY (id)
)";
if (mysqli_query($mysqli,$sql))
{
echo "Table 'quoter' was created sucessfully";
}
else
{
echo "Error creating table 'quoter': ".mysqli_error($mysqli);
}
以及您的config.php
$mysqli = new mysqli('localhost', 'fake_user', 'my_password', 'my_db');
if ($mysqli->connect_errno) {
die('Connect Error: ' . $mysqli->connect_errno);
}
我希望您注意,$mysqli
是处理连接的参数,因此在数据库中执行操作时需要传递此参数,例如
mysqli_query($mysqli,$sql);
//^here it is
这是因为您在
config.php
中混合了mysqli
和mysql
api,最终根本没有连接
mysqli_connect($db_hostname, $db_username, $db_password)
mysql_select_db($db_database)
要使用mysqli扩展到数据库的正确连接(使用mysqli显然更好,因为不推荐使用mysql.*
函数),请执行以下操作:
$mysqli = new mysqli('localhost', 'fake_user', 'my_password', 'my_db');
if ($mysqli->connect_errno) {
die('Connect Error: ' . $mysqli->connect_errno);
}
你可以查一下
我想补充一点,您可以在任何其他需要连接的脚本中使用来自config.php
的连接
require('config.php');
因此,您的createables.php
将如下所示
require("config.php");
$sql="CREATE TABLE quoter (
id int NOT NULL AUTO_INCREMENT,
quote text NOT NULL,
quoteby CHAR(50) NOT NULL,
PIMARY KEY (id)
)";
if (mysqli_query($mysqli,$sql))
{
echo "Table 'quoter' was created sucessfully";
}
else
{
echo "Error creating table 'quoter': ".mysqli_error($mysqli);
}
以及您的config.php
$mysqli = new mysqli('localhost', 'fake_user', 'my_password', 'my_db');
if ($mysqli->connect_errno) {
die('Connect Error: ' . $mysqli->connect_errno);
}
我希望您注意,$mysqli
是处理连接的参数,因此在数据库中执行操作时需要传递此参数,例如
mysqli_query($mysqli,$sql);
//^here it is
如果您在config.php中连接,为什么要在createtable.php中重新连接?您提出了一个很好的观点,删除了它,但它仍然输出无法选择定义的数据库:拒绝用户“”@'localhost'访问数据库“testdb”,这告诉我它仍然无法将用户名根发送到数据库,我不明白为什么看一看Fabio的答案,它应该可以解决问题。如果你在config.php中连接,为什么要在createtable.php中重新连接?你说得很好,已删除,但仍无法选择已定义的数据库:用户“@'localhost”对数据库“testdb”的访问被拒绝,这告诉我它仍然无法将用户名根发送到数据库,我不明白为什么查看Fabio的答案,应该可以解决问题。谢谢Fabio,您的帖子内容非常丰富,源代码/文档也非常感谢,在阅读完之后,我将在mysqli中重新启动整个config.php,您看到的createtable.php文件是否存在与config.php中的mysqli冲突的重大问题?@BenF我已经更新了我的答案,让您理解,请再次检查它谢谢Fabio,为了正确地学习它,我对你发布的所有内容进行了引用,并做了一些小改动,但基本上你让它为我工作了:)我实际上正在考虑将它全部切换回MySQL,但在你的帮助和引用下,MySQLi并没有那么令人畏惧。@BenF欢迎你。我建议下一步学习
准备好的语句
,它将帮助您在任何情况下正确处理mysql数据库。成功是短暂的,出于某种原因,它说我没有选择数据库,尽管我明确告诉它选择testdb谢谢Fabio,您的帖子内容非常丰富,源代码/文档也非常感谢,在阅读完之后,我将在mysqli中重新启动整个config.php,您看到的createtable.php文件是否存在与config.php中的mysqli冲突的重大问题?@BenF我已经更新了我的答案,让您理解,请再次检查它谢谢Fabio,为了正确地学习它,我对你发布的所有内容进行了引用,并做了一些小改动,但基本上你让它为我工作了:)我实际上正在考虑将它全部切换回MySQL,但在你的帮助和引用下,MySQLi并没有那么令人畏惧。@BenF欢迎你。我建议下一步学习准备好的语句
,它将帮助您在任何情况下正确处理mysql数据库。成功是短暂的,出于某种原因,它说我没有选择数据库,尽管我明确告诉它选择testdb