使用自定义脚本来验证数据库中的电子邮件地址时,我收到了一些奇怪的结果。PHP MSSQL脚本问题(警告:不是MS SQL链接资源)
我有一个PHP脚本,通过命令行运行来验证电子邮件地址:
如果我运行通过脚本下面我得到的结果是:
./verify-valid-email-account.php [email protected]
[email protected] is invalid
的脚本设计接受多个参数(电子邮件地址),并返回每个结果:
./verify-valid-email-account.php [email protected] [email protected]
[email protected] is invalid
[email protected] is invalid
然而,这个问题进来时,我尝试做每通话3个或多个电子邮件地址,我得到后续荷兰国际集团的错误:
./verify-valid-email-account.php [email protected] [email protected] [email protected]
[email protected] is invalid
[email protected] is invalid
Warning: mssql_query(): 4 is not a valid MS SQL-Link resource in /scripts/verify-valid-email-account.php on line 46
Warning: mssql_num_rows(): supplied argument is not a valid MS SQL-result resource in /scripts/verify-valid-email-account.php on line 48
[email protected] is invalid
Warning: mssql_close(): 4 is not a valid MS SQL-Link resource in /scripts/verify-valid-email-account.php on line 62
如果我尝试调用5个电子邮件地址给脚本的前两将正常工作,最后3将返回下面的同样的错误。
这里是我的脚本的一部分:
if ($argc >= 2)
{
//connection to the database
$dbhandle = mssql_connect($myServer, $myUser, $myPass) or die("Couldn't connect to SQL Server on $myServer");
//select a database to work with
$selected = mssql_select_db($myDB, $dbhandle) or die("Couldn't open database $myDB");
for($i=1; $i<$argc; $i++) {
$query = "<removed as it is huge>";
$result = mssql_query($query);
if (!$result) {
echo 'Error: ', mssql_get_last_message(), "\n";
continue;
}
$numRows = mssql_num_rows($result);
if ($numRows == 0)
{
echo $argEmail . " is invalid\n";
} else {
echo $argEmail . " is valid\n";
}
}
//close the connection to the DB.
mssql_close($dbhandle);
}
正如你可以看到我打开到数据库的连接和前选择dabase for循环。在for循环中,我会在每次迭代时选择语句并处理结果。当我完成for循环时,关闭数据库连接。
我试着将查询,结果和numRows变量设置为null,但这似乎并没有解决问题。
[更新1]
每Dereleased的建议下面,我加入上述错误代码。现在的输出显示如下:
./verify-valid-email-account.php [email protected] [email protected] [email protected]
[email protected] is invalid
[email protected] is invalid
Warning: mssql_query(): 4 is not a valid MS SQL-Link resource in /scripts/verify-valid-email-account.php on line 48
Error: Changed database context to 'EmTest'.
我使用的数据库是EMTEST,看来,它的两个迭代循环后改变环境。
这是enitre脚本(除了数据库的IP地址信息,这是在if语句之外)。我打算在Perl中这样做,但我不想尝试下载4个不同的包来使其工作。 – jinanwow 2011-01-28 17:34:21