我是该网站的新用户。 我正在尝试执行以下简单查询:
$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
我在做什么错?有人可以帮我吗?
答案 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驱动程序以了解准备好的语句和绑定参数