我刚刚开始编写我自己的脚本大约一个小时前,我遇到了一个错误,我不确定如何修复,似乎一切都正确解析除了用户名,出于某种原因我执行我的PHP表创建脚本它没有解析config.php中的用户名,而是执行没有用户名的脚本。
我把代码放到phpcodechecker.com/并且它没有给我任何东西,甚至没有任何警告,它让我真的很困惑,代码对我来说看起来很好但我在这方面相当新手所以我可能错过了巨大的东西,任何帮助将不胜感激。
为什么这个代码在尝试连接时不会将用户名解析为createtable.php?
有问题的代码段; 堆栈格式化代码块的方式让我感到困惑,所以我只使用pastebin
答案 0 :(得分:1)
这是因为您在mysqli
混合了mysql
和config.php
api,最终根本没有连接
mysqli_connect($db_hostname, $db_username, $db_password)
mysql_select_db($db_database)
使用mysqli来表示与数据库的正确连接(因为mysql_*
函数被弃用,显然更好用),请执行以下操作:
$mysqli = new mysqli('localhost', 'fake_user', 'my_password', 'my_db');
if ($mysqli->connect_errno) {
die('Connect Error: ' . $mysqli->connect_errno);
}
您可以查看documentation here
我想补充一点,您可以在任何其他需要它的脚本中使用config.php
的连接。
require('config.php');
所以你的creatables.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