我有2个数据库:
我有数据库连接:
$con1 = mysql_connect('127.1.0.0', 'root', 'root');
mysql_select_db('news_db', $con1);
$con2 = mysql_connect('127.1.0.0', 'root', 'root');
mysql_select_db('branding', $con2);
我的代码:
$dataNews = mysql_fetch_assoc(mysql_query("SELECT * FROM t_news",$con1));
echo $dataNews['title']; /* it is working, showing "Test Title" */
$dataBrand = mysql_fetch_assoc(mysql_query("SELECT * FROM t_branding",$con2));
echo $dataBrand['title']; /* it is not working, nothing to show */
但是,如果我反转查询,如:
$dataBrand = mysql_fetch_assoc(mysql_query("SELECT * FROM t_branding",$con2));
echo $dataBrand['title']; /* it is working, showing "Test Brand Title */
$dataNews = mysql_fetch_assoc(mysql_query("SELECT * FROM t_news",$con1));
echo $dataNews['title']; /* it is not working, nothing to show" */
任何人都可以帮助我,为什么突然的php和mysql好像我只能运行一个连接,但昨天所有的连接都可以走路并且编码没有任何改变。感谢
答案 0 :(得分:4)
问题在于您正在重复使用连接:
取自mysql_connect()
的手册:
如果使用相同的参数对mysql_connect()进行第二次调用, 不会建立新链接,而是建立链接标识符 已经打开的链接将被退回。 new_link参数 修改此行为并使mysql_connect()始终打开一个新的 链接,即使之前使用相同的mysql_connect()调用 参数。在SQL安全模式下,将忽略此参数。
您应该将第四个( true
$new_link
)参数解析为第二个连接,如下所示:
$con1 = mysql_connect('127.1.0.0', 'root', 'root');
mysql_select_db('news_db', $con1);
$con2 = mysql_connect('127.1.0.0', 'root', 'root', true);
mysql_select_db('branding', $con2);
如上所述,您应避免使用mysql_*
函数,因为api IS 已弃用。
或者,您应该查看PDO
或Mysqli Prepared Statements
。
更多笔记
您应该在开发时启用错误报告,以确保不会遇到任何问题:
ini_set('display_errors', 1);
error_reporting(E_ALL);
既然你正在使用mysql,你应该看看mysql_error()
这可能会抛出类似的消息:
The table TABLENAME doesn't exist in DATABASE
答案 1 :(得分:2)
使用代码 -
$con1 = mysql_connect('127.1.0.0', 'root', 'root');
mysql_select_db('news_db', $con1);
$con2 = mysql_connect('127.1.0.0', 'root', 'root');
mysql_select_db('branding', $con2);
或者,
$con1 = mysql_connect('127.1.0.0', 'root', 'root');
$con2 = mysql_connect('127.1.0.0', 'root', 'root'); // this line is redundant, both lines are same
mysql_select_db('news_db', $con1);
mysql_select_db('branding', $con2); // this will be selected
效果将是 - 数据库品牌将被选中, news_db 将不会被选中,因为它是在news_db
之后写的!
所以,您的bnoth查询将查找数据库品牌,如果您使用{{检查},将会抛出错误“表......未找到” 1}}
答案 2 :(得分:1)
$con1 = mysql_connect('127.1.0.0', 'root', 'root');
mysql_select_db('news_db', $con1);
$dataNews = mysql_fetch_assoc(mysql_query("SELECT * FROM t_news",$con1));
echo $dataNews['name'];
$con2 = mysql_connect('127.1.0.0', 'root', 'root');
mysql_select_db('branding', $con2);
$dataBrand = mysql_fetch_assoc(mysql_query("SELECT * FROM t_branding",$con2));
echo $dataBrand['title'];
您可以使用此代码。我认为它对您有所帮助。