//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行。
我做错了什么?
答案 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()
或类似的