mysql一直给出sql语法错误

时间:2015-05-12 18:13:28

标签: php mysql

//database class    
class dbmgmt{
            public $tbl_name;
            public $field_arr;
            public $val_arr;
            public $cond_arr;

            function execute($sql){
                global $conn;
                $result=$conn->query($sql);
                if(!$result) echo "Error: ".$conn->error;
            }
            function insert(){
                $sql="INSERT INTO ".$this->tbl_name." SET ";

                for($i=0;$i++;$i<count($this->field_arr)){
                    if($i!=(count($this->field_arr)-1)){
                        $sql.=$this->field_arr[i]."=".$this->val_arr.",";
                    }else{
                        $sql.=$this->field_arr[i]."=".$this->val_arr;                   
                    }
                }

                $this->execute($sql);   
            }
    }

    $ado=new dbmgmt();

//admin_add.php
$ado->tbl_name="tbl_admin";
$ado->field_arr=array("username","password",'type','email');
$ado->val_arr=array($username,create_hash($password),$admin_type,$email);
                $ado->insert();
                if($conn->connect_error){
                    die("Failed to add Record: ".$conn->connect_errno. ' '.$conn->connect_error);
                }else{

                    echo "Succesfully Added Record";
                    echo "<script>window.location=".ADMIN_PAGE."</script>";
                }

我一直收到这个错误:

  

错误:您的SQL语法出错;查看与您的MySQL服务器版本相对应的手册,以获得在&#39;&#39;附近使用的正确语法。在第1行。

我做错了什么?

2 个答案:

答案 0 :(得分:0)

你的for循环中存在一个问题:

for($i=0;$i++;$i<count($this->field_arr)){
                    if($i!=(count($this->field_arr)-1)){
                        $sql.=$this->field_arr[i]."=".$this->val_arr.",";
                    }else{
                        $sql.=$this->field_arr[i]."=".$this->val_arr;                   
                    }

应该在结束标准之后使用计数器

for($i=0;$i<count($this->field_arr;$i++)){
                    if($i!=(count($this->field_arr)-1)){
                        $sql.=$this->field_arr[i]."=".$this->val_arr.",";
                    }else{
                        $sql.=$this->field_arr[i]."=".$this->val_arr;                   
                    }

答案 1 :(得分:0)

一个问题是你需要引用字符串值:

$sql.=$this->field_arr[i]."=\"".$this->val_arr."\"";

需要使用mysqli_real_escape_string()或类似的

转义价值