无法连接到SQL时的PHP脚本

时间:2015-07-30 14:05:06

标签: php mysql sql

我想要做的...是一个连接到sql server的简单脚本,从数据库中选取一些信息并将其发布在网站的小表中。我遇到的问题是,如果sql server脱机(它发生),那么它会在60秒内超时并显示错误。到那时,网站几分钟不可用。我想要做的是将超时值从60secs提供给示例2,如果失败,则显示类似"无法连接"的消息。 该脚本看起来像

    <?php
$dbserver="[IP-ADDRESS]"; 
$dblogin="root";       
$dbpass="[PASSWORD]";     
$dbname="[DATABASENAME]";    

            mysql_connect($dbserver, $dblogin, $dbpass);
            mysql_select_db($dbname);
            mysql_query("SET NAMES 'utf8'");

            $vypis =  mysql_query("SELECT * FROM characters WHERE (accesslevel < '1') order by pkkills desc LIMIT 5"); 
            echo '<table style="text-align: center; width: 220px;" border="0"><tr><td><center>Nick</center></td><td></td><td>Kills</td></tr>';
     while($row = mysql_fetch_array($vypis))
                {
            echo '<tr><td><b><font color="white">';
            echo $row["char_name"];
            echo '</font></td><td>&nbsp;&nbsp;</td><td><font color="white">';
            echo $row["pkkills"];
            echo '</font></td></tr></b>';

echo '</table>';
?>

非常感谢任何帮助或提示。

1 个答案:

答案 0 :(得分:0)

首先,请尝试避免使用IpRequestRate,而是更喜欢使用PDOmysqli,而正如Nytrix所说。

mysql

请注意,我在不需要时准备并执行了语句,但我认为显示prepare / execute语句非常重要,因为它被广泛使用,而且我发现它是一种更好的做法。有关更多信息,请参阅this stackoverflow question

最后,我没有尝试,但我认为你在代码示例中输入了真实的密码,登录等,请考虑删除它!

PS:我认为你的问题不是连接速度慢,而是你的时间里缺少一个<?php /*increase time to connect*/ ini_set('mysql.connect_timeout', 2); $dbserver="foo_server"; $dblogin="root"; $dbpass="foo"; $dbname="foo2"; /* tries to connect, if it fails it echo 'could not connect to the database' */ try { $db = new PDO('mysql:host='.$dbserver.';dbname='.$dbname, $dblogin, $dbpass); } catch(Exception $e) { echo('Could not connect to the database'); } $stmt = $db -> prepare("SELECT * FROM characters WHERE (accesslevel < '1') order by pkkills desc LIMIT 5"); $stmt -> execute(array()); /*or $stmt -> query("SELECT * FROM characters WHERE (accesslevel < '1') order by pkkills desc LIMIT 5"); */ echo '<table style="text-align: center; width: 220px;" border="0"><tr><td><center>Nick</center></td><td></td><td>Kills</td></tr>'; while($row = $stmt->fetch()) { echo '<tr><td><b><font color="white">'; echo $row["char_name"]; echo '</font></td><td>&nbsp;&nbsp;</td><td><font color="white">'; echo $row["pkkills"]; echo '</font></td></tr></b>'; } echo '</table>'; ?> 括号。