*MySQL 稍后会升级。
前言:作者可以用两种语言注册,并且由于各种其他原因,这意味着 2 个数据库。我们意识到在使用多个数据库时设置看起来很奇怪,但更多的是这个简短的解释使它看起来如此。所以请忽略那个奇怪的东西。
情况:我的第一个查询生成了一个已取消订阅的作者的记录集。它在第一个数据库中找到它们。
require_once('ConnString/FirstAuth.php');
mysql_select_db($xxxxx, $xxxxxx);
$query_Recordset1 = "SELECT auth_email FROM Authors WHERE Cancel = 'Cancel'";
$Recordset1 = mysql_query($query_Recordset1, $xxxxxx) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
在它们也被列出的第二个数据库中,(表名和列名相同)我想更新它们,因为它们已取消。要选择他们的记录进行更新,我想获取第一个记录集,将其放入一个数组中,换出 connStrings,然后使用该数组进行搜索。
这些也有效。
$results = array();
do {
results[] = $row_Recordset1;
} while ($row_Recordset1 = mysql_fetch_assoc($Recordset1));
print_r($results);
给了我一个数组。数组 ( [0] => 数组 ( [auth_email] => renault@autxxx.com ) [1] => 数组 ( [auth_email] => rinaldi@autxxx.com ) [2] => 数组 ( [auth_email] => hemingway@autxxx.com )) ...所以我知道它正在寻找第一组数据。
这就是问题所在:第二个数据库的查询通过 auth_email 查找作者,如果它是 $results 数组的“IN”,但它没有像我预期的那样在第二个数据库中找到作者。请注意不同的 connString
require_once('ConnString/SecondAuth.php');
mysql_select_db($xxxxx, $xxxxxx);
$query_Recordset2 = "SELECT auth_email FROM Authors WHERE auth_email IN('$results')";
$Recordset2 = mysql_query($query_Recordset2, $xxxxxx) or die(mysql_error());
$row_Recordset2 = mysql_fetch_assoc($Recordset2);
var_dump 为 0,但我知道应该找到两条记录。我已经尝试过各种 IN 组合,例如 {$results},但是当我遇到“'$results'”时,是时候寻求帮助了。我检查了所有可用的帖子,但没有一个能解决我的问题,尽管我现在更熟悉野鹅种群。
我想,因为我换掉了连接字符串,也许 $result 被设为空,所以我将它重新设置为原始的 connString 并且它仍然没有在同一个数据库中的 $results 中找到 auth_email,它肯定应该这样做。
此外,我之前已经换掉了 connStrings 并获得了积极的结果,所以......嗯......
我的目标是在工作时将 Recordset2 回显到一个带有 do/while 循环的表单中,这将允许我更新他们在第二个数据库中的记录。由于 var_dump 为 0,显然下面的这并没有给我第二个表中的作者列表,其电子邮件地址出现在 $results 数组中,但我将其作为示例包含在页面中启动表单的示例.
do {
$row_Recordset2['auth_email_addr '];
} while($row_Recordset2 = mysql_fetch_assoc($Recordset2));
与往常一样,您可以提供的任何指示都将受到赞赏,并接受正确的答案。