我在使用 PHP 和 MySQL 时遇到了一个非常奇怪的问题。我在 PHP 脚本中执行以下操作:
$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 命令行中执行查询时,我得到以下信息:
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 victor@localhost on
101 Init DB saw
101 Init DB sawprueba
101 Query SELECT * FROM Almacen
101 Quit
Apache 日志不显示任何内容,也不显示站点特定日志。
我正在编写的程序是一个迁移工具。它从一个数据库中提取信息,对其进行处理,然后将其插入到另一个数据库中。为此,我需要连接到两个数据库。我按照 PHP documentation 中的建议使用单例模式通过两个类建立连接。 。可以在 github repo 中看到连接文件.
为了建立与数据库的连接,我这样调用此类:
$vitoquen = Vitoquen::singleton();
$newVitoquen = NewVitoquen::singleton();
$vitoquenId = $vitoquen->getId();
$newVitoquenId = $newVitoquen->getId();
发生的情况是,由于某种原因,它没有创建两个单独的连接,而是仅创建一个连接,并使用第二个数据库,即新的空数据库。当我看到MySQL日志时我得到了线索:
110802 16:21:49 101 Connect victor@localhost on
101 Init DB saw
101 Init DB sawprueba
101 Query SELECT * FROM Almacen
101 Quit
显示101 Init DB两次;一个用于 saw
,另一个用于 sawprueba
。现在我不明白为什么它不创建两个单独的连接...
最佳答案
连接到 DBMS 时您是否选择了正确的数据库(也称为方案)?
示例:
mysql_select_db("mydatabase", $link);
关于php - 当一切看起来正常时没有选择任何行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6918822/