即时通讯与php和mysql有一个很奇怪的问题。 Im做在我的PHP脚本如下:奇怪的问题与PHP和MySQL。没有行时选择一切似乎是正常的?
执行此操作时$query1 = "SELECT * FROM ".$src;
$ans1 = mysql_query($query1,$vitoquenId);
echo "<p>Query: \"".$query1."\"<br/>Error: \"".mysql_error()."\"<br/>Total rows extracted: ".mysql_num_rows($ans1)."</p>";
,这是输出:
Query: "SELECT * FROM Almacen"
Error: ""
Total rows extracted: 0
的事情是,我不是应该得到0行,而奇怪的是,没有错误报告。我授予了我的用户的所有权限,甚至尝试以root用户身份连接到数据库,但获得了相同的行为。
当mysql命令行直接IM做查询得到以下:
mysql> SELECT * FROM Almacen;
+----+-------------+------------+--------+
| id | nombre | tipo | status |
+----+-------------+------------+--------+
| 1 | Tienda | Principal | Activo |
| 2 | Dep�sito | Secundario | Activo |
| 3 | Chaguaramos | Secundario | Activo |
+----+-------------+------------+--------+
3 rows in set (0.00 sec)
伊夫使用XAMPP服务器尝试,也是一个配置按自己的服务器,并得到了相同的行为。 我检查了每个日志我想到的,配置mysql来记录每个查询,并没有任何异常似乎发生。
MySQL日志显示以下信息:
110802 16:21:49 101 Connect [email protected] on
101 Init DB saw
101 Init DB sawprueba
101 Query SELECT * FROM Almacen
101 Quit
的Apache日志犯规显示任何东西,无论是现场特定的日志。请任何线索试图破译这将是非常apreciated!谢谢!!! =)
编辑:
我发现这个问题。它与aefxx的答案有关。
即时编写的程序是一个迁移工具。它从一个数据库中提取信息,处理它,并将其插入到另一个数据库中。为此,我需要连接到两个数据库。我使用php documentation中建议的单例模式通过两个类进行连接。您可以在github repo中看到连接文件。
作出数据库的连接,我调用这个类是这样的:
正在发生的事情是,由于某种原因,它不会创建两个单独的连接,而是只创建一个连接,并使用第二个数据库,即新的数据库,它是空的。我得到的线索时,我看到了MySQL日志:
110802 16:21:49 101 Connect [email protected] on
101 Init DB saw
101 Init DB sawprueba
101 Query SELECT * FROM Almacen
101 Quit
它显示101初始化DB两次;一个用于saw
,另一个用于sawprueba
。现在我不明白为什么它不会创建两个单独的连接...任何建议?
非常感谢您的帮助! =)
编辑:
我不能自我答案,但是这是解决我的问题。非常感谢那些花时间阅读(和一些回答)的人!
如在php mysql_connect() function的文档中所看到的,它接收一个可选参数new_link
,默认为false
。
new_link
如果第二个电话是对mysql_connect()使用相同的 论点,没有新的链接将被建立,而是已经打开的链接的链接 标识将被退回。 new_link 参数修改了此行为,并且使mysql_connect()始终打开 一个新链接,即使以前使用相同的 参数调用了mysql_connect()。在SQL安全模式下,该参数被忽略。
所以,我只需要在这两个连接类中调用mysql_connect()时添加一个true作为附加的最后一个参数。 求助=)
什么是'$ vitoquenId'?它是一个有效的MySQL资源吗? – TehShrike
'var_dump' $ ans1 –