2013-05-31 18 views
1

我刚开始编写我自己的脚本大约一小时前,我遇到了一个错误,我不确定如何解决,似乎一切正常解析除了用户名,由于某种原因,当我执行我的PHP表创建脚本时,它不是从config.php解析用户名,而是执行没有用户名的脚本。脚本没有正确发送登录信息

我把代码通过phpcodechecker.com/,它给了我什么都没有,甚至没有任何警告,它让我真的很困惑,代码对我来说看起来不错,但我很新手,所以我'可能错过了巨大的东西,任何帮助将不胜感激。

为什么这段代码在尝试连接时解析用户名到createtable.php?

有问题的代码片段; 方式堆栈格式的代码块混淆了地狱了我,所以我就用引擎收录

config.php

createtable.php

+0

如果你在config.php中连接,你为什么要在createtable.php中重新连接? – MatthewMcGovern

+0

你提出了一个很好的观点,删除了它,但它仍然在输出 无法选择定义的数据库:拒绝用户''@'localhost'到数据库'testdb' 这告诉我它仍然无法发送用户名root到数据库,我不明白为什么 –

+1

看看法比奥的答案,它应该解决问题。 – MatthewMcGovern

回答

1

这是因为你混合mysqlimysql API中config.php它结了根本没有连接

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 
+0

谢谢法比奥,你的文章内容非常丰富,在阅读完后我会重新启动整个config.php文件,非常感谢你的来源/文档,你是否有任何与createtable.php文件有关的大问题可以看到这将与config.php中的mysqli冲突吗? –

+0

@BenF我已经更新了我的答案,让你明白,请检查它 – Fabio

+0

再次感谢Fabio,我仔细检查了你发布的所有内容,以便正确学习并做了一些小改动,但本质上你已经为我工作: )我实际上正在考虑把它全部切换回MySQL,但是在你的帮助和参考资料中,MySQLi并不那么令人生畏。 –