mysql不断给出sql语法错误 //数据库类 类dbmgmt{ 公共$tbl_名称; 公共$field_arr; 公费$val_arr; 公共资源$cond_arr; 函数执行($sql){ 全球$conn; $result=$conn->query($sql); 如果(!$result)回显“错误:.$conn->错误; } 函数插入(){ $sql=“插入到“$this->tbl_name.”集合中”; 对于($i=0;$i++;$i字段\u arr)){ 如果($i!=(计数($this->field_arr)-1)){ $sql.=$this->field_arr[i]。“=”$this->val_arr.,”; }否则{ $sql.=$this->field\u arr[i]。“=”$this->val\u arr; } } $this->execute($sql); } } $ado=new dbmgmt(); //admin_add.php $ado->tbl_name=“tbl_admin”; $ado->field_arr=array(“用户名”、“密码”、“类型”、“电子邮件”); $ado->val\u arr=array($username,create\u hash($password),$admin\u type,$email); $ado->insert(); 如果($conn->connect\u错误){ die(“添加记录失败:“.$conn->connect\U errno.”.$conn->connect\U error); }否则{ echo“成功添加记录”; echo“window.location=“.ADMIN_PAGE.”; }
我不断地发现这个错误: 错误:您的SQL语法有错误;请查看与MySQL服务器版本对应的手册,以获取第1行“”附近要使用的正确语法mysql不断给出sql语法错误 //数据库类 类dbmgmt{ 公共$tbl_名称; 公共$field_arr; 公费$val_arr; 公共资源$cond_arr; 函数执行($sql){ 全球$conn; $result=$conn->query($sql); 如果(!$result)回显“错误:.$conn->错误; } 函数插入(){ $sql=“插入到“$this->tbl_name.”集合中”; 对于($i=0;$i++;$i字段\u arr)){ 如果($i!=(计数($this->field_arr)-1)){ $sql.=$this->field_arr[i]。“=”$this->val_arr.,”; }否则{ $sql.=$this->field\u arr[i]。“=”$this->val\u arr; } } $this->execute($sql); } } $ado=new dbmgmt(); //admin_add.php $ado->tbl_name=“tbl_admin”; $ado->field_arr=array(“用户名”、“密码”、“类型”、“电子邮件”); $ado->val\u arr=array($username,create\u hash($password),$admin\u type,$email); $ado->insert(); 如果($conn->connect\u错误){ die(“添加记录失败:“.$conn->connect\U errno.”.$conn->connect\U error); }否则{ echo“成功添加记录”; echo“window.location=“.ADMIN_PAGE.”; },php,mysql,Php,Mysql,我不断地发现这个错误: 错误:您的SQL语法有错误;请查看与MySQL服务器版本对应的手册,以获取第1行“”附近要使用的正确语法 我做错了什么?您的for循环中有一个问题: //database class class dbmgmt{ public $tbl_name; public $field_arr; public $val_arr; public $cond_arr;
我做错了什么?您的for循环中有一个问题:
//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>";
}
($i=0;$i++;$ifield\u arr))的{
如果($i!=(计数($this->field_arr)-1)){
$sql.=$this->field_arr[i]。“=”$this->val_arr.,”;
}否则{
$sql.=$this->field\u arr[i]。“=”$this->val\u arr;
}
应在结束标准后与计数器一起
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;
}
($i=0;$ifield\u arr;$i++)的{
如果($i!=(计数($this->field_arr)-1)){
$sql.=$this->field_arr[i]。“=”$this->val_arr.,”;
}否则{
$sql.=$this->field\u arr[i]。“=”$this->val\u 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;
}
需要使用
mysqli\u real\u escape\u string()
或类似的方法对值进行转义。在执行查询之前,查询是什么样子的?您正在使用SET
编写INSERT
查询?它是否正确SET
可以用于INSERT
回显给我这个“INSERT-INTO-tbl\u管理集”今天下午我可能会喝咖啡,只是为了让我保持水分@Fred-ii-我猜他可能也需要用引号括起他的值,但我的php非常生疏。
$sql.=$this->field_arr[i]."=\"".$this->val_arr."\"";