PHP-mysqli中的错误1064尝试进行选择查询

时间:2019-02-27 19:50:48

标签: php mysql mysqli

我是该网站的新用户。 我正在尝试执行以下简单查询:

$id_book=$_REQUEST['id_book'];
$date=date("Y/m/d");
$sql="INSERT INTO books(id_book,date) VALUES($id_book,'$date')";
if(!$mysqli->query($sql)){
   die($mysqli->error.". ".$mysqli->errno);
};

但收到以下错误消息:

  

您的SQL语法有错误;检查手册   对应于您的MySQL服务器版本以使用正确的语法   1行附近的''2019/02/27')'附近1064

我在做什么错?有人可以帮我吗?

2 个答案:

答案 0 :(得分:3)

首先,请勿将private static Retrofit retrofit = null; private static int REQUEST_TIMEOUT = 60; private static OkHttpClient okHttpClient; public static Retrofit getClient(Context context) { if (okHttpClient == null) initOkHttp(context); if (retrofit == null) { retrofit = new Retrofit.Builder() .baseUrl(CaselotREST.CASELOT_BASEURL) .client(okHttpClient) .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) .addConverterFactory(GsonConverterFactory.create()) .build(); } return retrofit; } 变量注入您的SQL中,请参阅How can I prevent SQL injection in PHP?并使用准备好的语句。

您需要为MySQL使用正确的DATE格式:

$_REQUEST['id_book']

$date = date("Y-m-d"); 也是MySQL中的保留字,因此请为列名选择其他名称或使用反引号:

date

答案 1 :(得分:0)

尝试正确转换日期字符串中的日期

$sql="INSERT INTO books(id_book,date) VALUES($id_book,str_to_date('$date', '%Y/%m/%d')";

无论如何,您不应该在sql中使用php var ..您有可能遭受sqlinjection ..为避免这种情况,请查看msysql驱动程序以了解准备好的语句和绑定参数