<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>https://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>https://jackxiang.com/post//</link>
<title><![CDATA[PHP连接Mysql时候用如何使用上try catch实现捕获连接上的错误简单示例。]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[Php/Js/Shell/Go]]></category>
<pubDate>Wed, 20 May 2015 03:39:36 +0000</pubDate> 
<guid>https://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	背景：对于书上一些连接mysql的例子，总是像写c语言一样，一行一行的，直接写下去，确实好看明白，但是在实际使用中，如果暴露出错误到前端页面是不太好的，这时候需要try catch来捕获这些错误，对于mysql的连接句柄的密码是否正确可以用if直接判断其返回值，再用throw new exception(&quot;Sorry,could not connect to mysql.&quot;);而对于一些非密码的网络及数据库，得用上catch，网上有一篇文章就有这样的类似介绍。<br/><br/><textarea name="code" class="php" rows="15" cols="100">
&lt;?php
&nbsp;&nbsp;class OperateDB
&nbsp;&nbsp;&#123;
&nbsp;&nbsp;&nbsp;&nbsp; private $host=&#039;localhost&#039;;
&nbsp;&nbsp;&nbsp;&nbsp; private $userName=&#039;root&#039;;
&nbsp;&nbsp;&nbsp;&nbsp; private $passwd=&#039;&#039;;
&nbsp;&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp; //连接数据库
&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;&nbsp;function OpenDB()
&nbsp;&nbsp;&nbsp;&nbsp;&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($db=mysql_connect( $host,$userName,$passwd))
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//$db=mysql_connect($host,$username,$passwd);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $db;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throw new exception(&quot;Sorry,could not connect to mysql.&quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;catch(exception $e)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo $e-&gt;getmessage();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&nbsp;&nbsp;&nbsp;&nbsp;//选择数据库
&nbsp;&nbsp;&nbsp;&nbsp;public function SelectDB($whichdb,$db)
&nbsp;&nbsp;&nbsp;&nbsp;&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!mysql_select_db($whichdb,$db))
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throw new exception(&quot;Sorry,database could not be opened.&quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;catch(exception $e)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo $e-&gt;getmessage();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&nbsp;&nbsp;&nbsp;&nbsp;public function CloseDB($db)
&nbsp;&nbsp;&nbsp;&nbsp;&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mysql_close($db);
&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;public function Query($queryString)
&nbsp;&nbsp;&nbsp;&nbsp;&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($mysquery=mysql_query(&quot;$queryString&quot;))
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $mysquery;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo mysql_error();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&nbsp;&nbsp;&nbsp;&nbsp;&#125;

&nbsp;&nbsp;&#125;
?&gt;


</textarea><br/><br/>自己简单实践如下，如果密码错误则会捕获并报如下信息，而不是直接抛出：<br/>一）来个设置温度是否成功了，并无从db查询的数据返回的：<br/><textarea name="code" class="php" rows="15" cols="100">
&lt;?php
set_time_limit(5) ; 
Error_reporting(0);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
$user = &quot;root&quot;; //数据库用户名
$password = &quot;&quot;;//数据库密码
$db_name = &quot;temperature&quot;;//数据库
$arrRet = array(&quot;opt&quot;=&gt;&quot;setTemperatureValue&quot;,&quot;status&quot;=&gt;1);//设置温度成功
try &#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($link = mysql_connect(&quot;localhost:3306&quot;,$user,$password))&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mysql_select_db(&quot;$db_name&quot;,$link);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;else&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//throw new exception(&quot;Sorry,could not connect to mysql.&quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$arrRet = array(&quot;opt&quot;=&gt;&quot;setTemperatureValue&quot;,&quot;status&quot;=&gt;-1,&quot;errMsg&quot;=&gt;&quot;Sorry,could not connect to mysql.&quot;);//连接数据库失败
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&#125;catch (Exception $e)&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$arrRet = array(&quot;opt&quot;=&gt;&quot;setTemperatureValue&quot;,&quot;status&quot;=&gt;-1,&quot;errMsg&quot;=&gt;$e-&gt;getMessage());//数据库异常
&#125;

$settingTempValue = $_GET[&quot;setTemperatureValue&quot;];//设置温度值
$updatedTimes = strtotime(date(&quot;Y-m-d H:i:s&quot;));
if($_GET[&#039;equipNum&#039;]==&#039;One&#039;)&#123;
&nbsp;&nbsp;&nbsp;&nbsp;$settingTempOption = &quot;settingTempOneValue&quot;;//设置温度键值
&#125;else&#123;
&nbsp;&nbsp;&nbsp;&nbsp;$settingTempOption = &quot;settingTempTwoValue&quot;;//设置温度键值
&#125;
try &#123;
&nbsp;&nbsp;&nbsp;&nbsp;$sql = &quot;replace into&nbsp;&nbsp; tempoptsetting (settingName,settingValue,updatedTimes) values (&#92;&quot;&#123;$settingTempOption&#125;&#92;&quot;,&#92;&quot;&#123;$settingTempValue&#125;&#92;&quot;,&#92;&quot;$updatedTimes&#92;&quot;)&quot;;
&nbsp;&nbsp;&nbsp;&nbsp;$result=mysql_query($sql,$link);
&#125; catch (Exception $e) &#123;
&nbsp;&nbsp;&nbsp;&nbsp;$arrRet = array(&quot;opt&quot;=&gt;&quot;setTemperatureValue&quot;,&quot;status&quot;=&gt;-1,&quot;errMsg&quot;=&gt;$e-&gt;getMessage());//设置温度失败
&#125;
echo json_encode($arrRet);
?&gt;

</textarea><br/>密码错会报如下错，前端用json去解析判断并提示用户即可，自己也好查错不是：<br/>&#123;&quot;opt&quot;:&quot;setTemperatureValue&quot;,&quot;status&quot;:-1,&quot;errMsg&quot;:&quot;Sorry,could not connect to mysql.&quot;&#125;<br/><br/>二）来个有数据查询并返回的简单示例：<br/><textarea name="code" class="php" rows="15" cols="100">
&lt;?php
set_time_limit(5) ;
Error_reporting(0);
$user = &quot;root&quot;; //数据库用户名
$password = &quot;&quot;;//数据库密码
$db_name = &quot;temperature&quot;;//数据库名

try &#123;
&nbsp;&nbsp;&nbsp;&nbsp;if($link = mysql_connect(&quot;localhost:3306&quot;,$user,$password))&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mysql_select_db(&quot;$db_name&quot;,$link);
&nbsp;&nbsp;&nbsp;&nbsp;&#125;else&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//throw new exception(&quot;Sorry,could not connect to mysql.&quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$equipTempArr = array(&quot;opt&quot;=&gt;&quot;getTemperatureValue&quot;,&quot;status&quot;=&gt;-1,&quot;errMsg&quot;=&gt;&quot;Sorry,could not connect to mysql.&quot;);//连接数据库失败
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;die(json_encode($equipTempArr));
&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&#125;catch (Exception $e)&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$equipTempArr = array(&quot;opt&quot;=&gt;&quot;getTemperatureValue&quot;,&quot;status&quot;=&gt;-1,&quot;errMsg&quot;=&gt;$e-&gt;getMessage());//数据库异常
&#125;
//取最后插入的温度值
try &#123;
&nbsp;&nbsp;&nbsp;&nbsp;$sql = &quot;select * from temperatureone where id=(select id from temperatureone order by id desc limit 1) order by id desc&nbsp;&nbsp;limit 1&quot;;
&nbsp;&nbsp;&nbsp;&nbsp;$result=mysql_query($sql,$link);
&nbsp;&nbsp;&nbsp;&nbsp;$curTempOne=mysql_fetch_array($result);
&nbsp;&nbsp;&nbsp;&nbsp;$sql = &quot;select * from temperaturetwo where id=(select id from temperaturetwo order by id desc limit 1) order by id desc&nbsp;&nbsp;limit 1&quot;;
&nbsp;&nbsp;&nbsp;&nbsp;$result=mysql_query($sql,$link);
&nbsp;&nbsp;&nbsp;&nbsp;$curTempTwo=mysql_fetch_array($result);
&nbsp;&nbsp;&nbsp;&nbsp;try&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(isset($_GET[&#039;init&#039;])&amp;&amp;$_GET[&#039;init&#039;] == 1)&#123;//第一次请求顺带把设置温度也查询出来
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$sql = &quot;select * from tempoptsetting where settingName = &#92;&quot;settingTempOneValue&#92;&quot;&nbsp;&nbsp;limit 1&quot;;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$result=mysql_query($sql,$link);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$curTempSetOne = mysql_fetch_array($result); 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$sql = &quot;select * from tempoptsetting where settingName = &#92;&quot;settingTempTwoValue&#92;&quot;&nbsp;&nbsp;limit 1&quot;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$result = mysql_query($sql,$link);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$curTempSetTwo = mysql_fetch_array($result);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(($curTempSetOne != NULL) &amp;&amp; ($curTempSetTwo != NULL))
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$equipTempArr = array(&quot;opt&quot;=&gt;&quot;getTemperatureValue&quot;,&quot;status&quot;=&gt;-1,&quot;curTempOne&quot;=&gt;$curTempOne[&#039;nowTempValue&#039;],&quot;curTempTwo&quot;=&gt;$curTempTwo[&#039;nowTempValue&#039;],&quot;curTempSetOne&quot; =&gt; $curTempSetOne[&#039;settingValue&#039;],&quot;curTempSetTwo&quot; =&gt; $curTempSetTwo[&#039;settingValue&#039;]);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;else&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(($curTempOne != NULL) &amp;&amp; ($curTempTwo != NULL))//不为NUll
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$equipTempArr = array(&quot;opt&quot;=&gt;&quot;getTemperatureValue&quot;,&quot;status&quot;=&gt;-1,&quot;curTempOne&quot;=&gt;$curTempOne[&#039;nowTempValue&#039;],&quot;curTempTwo&quot;=&gt;$curTempTwo[&#039;nowTempValue&#039;]);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&nbsp;&nbsp;&nbsp;&nbsp;&#125;catch (Exception $e) &#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$equipTempArr = array(&quot;opt&quot;=&gt;&quot;getTemperatureValue&quot;,&quot;status&quot;=&gt;-1,&quot;errMsg&quot;=&gt;$e-&gt;getMessage());//查询数据时异常
&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&#125; catch (Exception $e) &#123;
&nbsp;&nbsp;&nbsp;&nbsp;$equipTempArr = array(&quot;opt&quot;=&gt;&quot;getTemperatureValue&quot;,&quot;status&quot;=&gt;-1,&quot;errMsg&quot;=&gt;$e-&gt;getMessage());//查询数据时异常
&#125;


$equipTempArr2Json = json_encode($equipTempArr);
echo $equipTempArr2Json;//打印出现在温度值
?&gt;
</textarea><br/>（1）错误结果：<br/>&#123;&quot;opt&quot;:&quot;getTemperatureValue&quot;,&quot;status&quot;:-1,&quot;errMsg&quot;:&quot;Sorry,could not connect to mysql.&quot;&#125;<br/>（2）正确结果：<br/>&#123;&quot;opt&quot;:&quot;getTemperatureValue&quot;,&quot;status&quot;:-1,&quot;curTempOne&quot;:&quot;40.2&quot;,&quot;curTempTwo&quot;:&quot;38.6&quot;,&quot;curTempSetOne&quot;:&quot;35.5&quot;,&quot;curTempSetTwo&quot;:&quot;55.4&quot;&#125;<br/>原始代码参考来源：http://bbs.csdn.net/topics/240078038
]]>
</description>
</item><item>
<link>https://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] PHP连接Mysql时候用如何使用上try catch实现捕获连接上的错误简单示例。]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>https://jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>