PHP / MySQL的
我不断收到此错误:“您的SQL语法出错;请查看与您的MySQL服务器版本对应的手册,以便在第1行使用”1“附近的正确语法。
我正努力让这个查询发生。它工作,它插入到mysql数据库,但每次都会出现此错误。我试图在同一行中使用所有内容,将双引号更改为单引号,删除所有在同一行中插入所有内容的空格,更改传递变量的方式({$ variable}为'。$ variable。')和其他一切。我已经看到了几个与此相关的stackoverflow问题,但有不同的解决方案。 我知道我们不能在数字字段中传递'。
我想我现在没有选择了。需要帮忙! 此错误一直显示但数据已正确插入我的表
这是代码:
$user_id = get_current_user_id();
$prescription_name = $_POST['prescription_name'];
$date_created = date('Y-m-d');
$last_updated = date('Y-m-d');
$right_eye_sphere = $_POST['right_eye_sphere'];
$left_eye_sphere = $_POST['left_eye_sphere'];
$right_eye_cylinder = $_POST['right_eye_cylinder'];
$left_eye_cylinder = $_POST['left_eye_cylinder'];
$right_eye_axis = $_POST['right_eye_axis'];
$left_eye_axis = $_POST['left_eye_axis'];
$pd = $_POST['pd'];
$date_of_birth = $_POST['date_of_birth'];
$file_path = $_POST['file_path'];
$add_query = "INSERT INTO wew_prescription (
prescription_id,
user_id,
prescription_name,
date_created,
last_updated,
right_eye_sphere,
left_eye_sphere,
right_eye_cylinder,
left_eye_cylinder,
right_eye_axis,
left_eye_axis,
pd,
date_of_birth,
file_path
) Values (
NULL,
{$user_id},
'{$prescription_name}',
'{$date_created}',
'{$last_updated}',
'{$right_eye_sphere}',
'{$left_eye_sphere}',
'{$right_eye_cylinder}',
'{$left_eye_cylinder}',
'{$right_eye_axis}',
'{$left_eye_axis}',
'{$pd}',
'{$date_of_birth}',
'{$file_path}'
)";
$sql = $dbCon->query($add_query);
if (!mysqli_query($dbCon,$sql)){
die('Error: ' . mysqli_error($dbCon));
}else{
mysqli_query($dbCon,$sql);
echo "dados atualizados!";
}
答案 0 :(得分:2)
错误来自这一行:
if (!mysqli_query($dbCon,$sql)){
$sql
包含
$dbCon->query($add_query);
由于该查询成功,$sql
包含TRUE
。 mysqli_query()
要求第二个参数为字符串,因此TRUE
变为"1"
,因此您实际上是这样做的:
if (!mysqli_query($dbCon, "1")) {
这不是有效的查询,因此您会收到错误。
我认为你真正要做的是:
if (!$sql) {
die('Error: ' . $dbCon->error);
} else {
echo "dados atualizados!";
}
您无需反复拨打mysqli_query()
。
您还应学习使用预准备语句进行编码,而不是将变量替换为查询,以防止SQL注入。