>  기사  >  백엔드 개발  >  写了一个连接数据库的通用类,SQL语句执行有有关问题

写了一个连接数据库的通用类,SQL语句执行有有关问题

WBOY
WBOY원래의
2016-06-13 13:31:401042검색

写了一个连接数据库的通用类,SQL语句执行有问题
有两个文件SqlTool.php和connector-test.php,SqlTool的代码如下:
class SqlTool
{
private $conn;
private $host="localhost";
private $user="root";
private $password="root";
private $db="db1";

function SqlTool()
{
$this->conn=mysql_connect($this->host,$this->user,$this->password);
if(!$this->conn)
{
echo("未连接数据库");
}
mysql_select_db($db,$this->conn);
mysql_query("set names utf8");
}
function execute_dml($sql)
{
$b=mysql_query($sql,$this->conn);
if(!$b)
{
return 0;
}
else 
{
if(mysql_affected_rows($this->conn)>0)
{
return 1;
}
else 
{
return 2;
}
}

}
}
?>
connector-test的代码如下:
require_once "SqlTool.php";

$sql="insert into table1 values(5,'187388','op')";
$st=new SqlTool();
$res=$st->execute_dml($sql);
if($res==0)
{
echo "执行未成功";
}
else if($res==1)
{
echo "执行成功";
}
else if($res==2)
{
echo "没有行数影响";
}
?>
现运行connector-test.php,总是显示执行未成功,不知道什么原因。望高手赐教。系统为Fedora15。

------解决方案--------------------
sql指令有错!

既然要封装数据库操作,就要把各种情况都考虑到
主要是封装错误处理
------解决方案--------------------

PHP code

#SqlTool.php
……
$b=mysql_query($sql,$this->conn);
#加一句:
if(!$b)
     die("SQL-->>: {$sql} <br>Error-->>: " . mysql_error() );  //如果出错将sql语句和mysql错误全部打出来
……
<br><font color="#e78608">------解决方案--------------------</font><br>可能执行过一次成功插入<br><br>后来的插入因为5是主键值,失败,要打印出错误如#2。加油……封装了再写框架 <div class="clear">
                 
              
              
        
            </div>
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.