SQL预备语句

时间:2018-06-29 08:41:11

标签: mysql sql syntax-error prepared-statement mysql-error-1064

我不断收到此错误:

  

在布尔值*上调用成员函数bind_param()

当我们尝试对不存在的表进行操作并且prepare语句返回false时,通常会出现该错误,但是我有一个结构化的表。 我准备的声明是:

$query = "INSERT INTO `profiles`(name,email,handle,DOB,profilePic,gender,r_lat,r_lon,c_lat,"
               . "c_lon,connections,recentActivities,savedItems,achievements,school,"
               . "interestsB,interestsI,interestsE,work,coverPic,bio,fb_url,insta_url,link_url,wordpress_url,"
               . "other_url,address,range,phone)VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";

PS:我愿意接受所有建议。

       $stmt=$mysqli->prepare($query);
       $stmt->bind_param("ssssssddddsssssssssssssssssii",$name,$email,$handle,$DOB,$profilePic,$gender,$r_lat,$r_lon,$c_lat,$c_lon,
               $connections,$recentActivities,$savedItems,$achievements,$school,$interestsB,
               $interestsI,$interestsE,$work,$coverPic,$bio,$fb_url,$insta_url,$link_url,$wordpress_url,
               $other_url,$address,$range,$phone);
       $res = $stmt->execute();
       return $res;  

我正在发布屏幕截图:

enter image description here

打印错误返回:

  

1064您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册以获取正确的语法,以在'range,phone)VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?, ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)'在第1行

1 个答案:

答案 0 :(得分:2)

rangereserved word in MySQL。您可以通过用正引号引起来将其转义:

`range`