php和mysql存在奇怪的问题。一切正常时是否未选择行?
我对php和mysql有一个非常奇怪的问题。我在php脚本中执行以下操作:php和mysql存在奇怪的问题。一切正常时是否未选择行?,php,mysql,mysql-num-rows,Php,Mysql,Mysql Num Rows,我对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)."<
$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>";
问题是,我不应该得到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)
110802 16:21:49 101 Connect victor@localhost on
101 Init DB saw
101 Init DB sawprueba
101 Query SELECT * FROM Almacen
101 Quit
我试过使用xampp服务器,也试过使用我自己配置的服务器,结果得到了同样的结果。
我检查了我想到的每一个日志,配置了mysql来记录每一个查询,似乎没有任何异常发生
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)
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日志没有显示任何内容,特定于站点的日志也没有显示任何内容。求求你,任何试图破译这个的线索都将是非常宝贵的!!!谢谢!!!=)
编辑:
我发现了问题。这与他的回答有关
im编写程序是一种迁移工具。它从一个数据库中提取信息,对其进行处理,然后将其插入另一个数据库。为此,我需要连接到两个数据库。我使用php中建议的单例模式通过两个类进行连接。您可以在中看到连接文件
为了连接数据库,我这样调用这个类:
$vitoquen = Vitoquen::singleton();
$newVitoquen = NewVitoquen::singleton();
$vitoquenId = $vitoquen->getId();
$newVitoquenId = $newVitoquen->getId();
由于某种原因,它不会创建两个单独的连接,而是只创建一个连接,并使用第二个db,即新的db,它是空的。当我看到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初始DB;一个用于saw
,另一个用于sawprueba
。现在我不明白为什么它不能创建两个独立的连接。。。有什么建议吗
非常感谢您的帮助!!!=)
编辑:
我还不能自我回答,但这是我问题的解决办法。无论如何,感谢那些花时间阅读(和回答)这篇文章的人
如的文档所示,它接收一个名为new_link
的可选参数,默认情况下该参数为false
新建链接如果使用相同的 参数,则不会建立新链接,而是 将返回已打开链接的标识符。新链接 参数修改此行为并使mysql_connect()始终打开 一个新的链接,即使之前使用相同的 参数。在SQL安全模式下,忽略此参数
因此,我只需要在两个连接类中添加一个true作为调用mysql_connect()的最后一个额外参数已解决=)连接到DBMS时,您是否选择了正确的数据库(也称为方案) 例如:
mysql_select_db("mydatabase", $link);
让我们添加一些最小的错误处理和一个额外的查询,以查看mysql对所讨论的表的“想法”
$query1 = "SHOW TABLE STATUS LIKE '$src'";
echo '<pre>Debug: query1=', $query1, "</pre>\n";
$ans1 = mysql_query($query1, $vitoquenId)
or die(mysql_error());
while ( false!==($row=mysql_fetch_assoc($ans1)) ) {
foreach( $row as $key=>$value ) {
echo $key,'="', $value, '" ';
}
echo "<br />\n";
}
$query1 = "SELECT * FROM ".$src;
echo '<pre>Debug: query1=', $query1, "</pre>\n";
$ans1 = mysql_query($query1,$vitoquenId)
or die(mysql_error());
echo "<p>Query: \"".$query1."\"<br/>Error: \"".mysql_error()."\"<br/>Total rows extracted: ".mysql_num_rows($ans1)."</p>";
$query1=“显示表格状态,如“$src”;
回显'Debug:query1=',$query1,“\n”;
$ans1=mysql\U查询($query1,$vitoquenId)
或者死(mysql_error());
while(false!=($row=mysql\u fetch\u assoc($ans1))){
foreach($key=>$value的行){
回显$key,“=”,$value,“”;
}
回显“
\n”;
}
$query1=“从“$src”中选择*;
回显'Debug:query1=',$query1,“\n”;
$ans1=mysql\U查询($query1,$vitoquenId)
或者死(mysql_error());
echo“Query:\.”$query1.\”
错误:\”“.mysql\u Error().“\”
提取的总行数:“.mysql\u num\u rows($ans1)。””;
对于与本地数据库的连接:
什么是
$vitoquenId
?它是有效的MySQL资源吗?