我一直盯着这一眼,并认为我没有察觉到这一点。
结果显示为1064(mysql引用表示这是语法错误)
$query = "INSERT INTO members ( id , username , password , all , articles ) VALUES ( ";
$query .= "'' , " ;
$query .= $username . "' , '" ;
$query .= $password . "' , '" ;
$query .= $allVals . "' , ";
$query .= "'' );";
$result = mysqli_query($con, $query);
if (mysqli_errno($con)){
echo mysqli_errno($con);
echo mysqli_connect_error($con);
}
我应该注意$ allVals是一个编码的json对象。
我的查询有什么问题?
答案 0 :(得分:3)
$query .= "'' , " ;
你错过了这里的单引号。
$query .= "'' , '" ;
应该做的工作。
我还考虑使用预准备语句来更好地了解语法错误的位置;当你尝试像这样构建你的查询时,调试它可能会更加困难。
$stmt = $con->prepare("INSERT INTO members ( id , username , password , all , articles ) VALUES ( '', ?, ?, ?, '')");
$stmt->bind_param("sss", $username, $password, $allVals);
$stmt->execute();
/* ... */
答案 1 :(得分:1)
看起来在$username
之后有一个单引号,但之前没有:
$query = "INSERT INTO members ( id , username , password , all , articles ) VALUES ( ";
$query .= "'' , '" ; //missed the quote here
$query .= $username . "' , '" ;
$query .= $password . "' , '" ;
$query .= $allVals . "' , ";
$query .= "'' );";
$result = mysqli_query($con, $query);
if (mysqli_errno($con)){
echo mysqli_errno($con);
echo mysqli_connect_error($con);
}
答案 2 :(得分:0)
你必须在每个值之后放置共同点。
$query = "INSERT INTO members ( id , username , password , all , articles ) VALUES ( ";
$query .= "'' , '" ;
$query .= $username . "','" ;
$query .= $password . "', '" ;
$query .= $allVals . "' ";
$query .= ")";
$result = mysqli_query($con, $query);
if (mysqli_errno($con)){
echo mysqli_errno($con);
echo mysqli_connect_error($con);
}
答案 3 :(得分:0)
如果您没有将数据插入id
或articles
列,请不要将它们作为查询语句的一部分包含在内:
$query = "INSERT INTO members ( username , password , all ) VALUES ( '";
$query .= $username . "' , '" ;
$query .= $password . "' , '" ;
$query .= $allVals . "' );";
$result = mysqli_query($con, $query);
if (mysqli_errno($con)){
echo mysqli_errno($con);
echo mysqli_connect_error($con);
}
此外,您需要确保正确转义变量。
答案 4 :(得分:0)
我喜欢这样做:
$query .= "('' , '".$username . "' , '" .$password . "' , '".$allVals . "' ,'' )";
它还适用于插入多行:
$qvals[] = "('' , '".$username[1] . "' , '" .$password[1] . "' , '".$allVals[1] . "' ,'' )";
$qvals[] = "('' , '".$username[2] . "' , '" .$password[2] . "' , '".$allVals[2] . "' ,'' )";
$qvals[] = "('' , '".$username[3] . "' , '" .$password[3] . "' , '".$allVals[3] . "' ,'' )";
$query = "INSERT INTO members ( `id` , `username` , `password` , `all` , `articles` ) VALUES ".implode(',',$qvals);
您可以通过检查echo $query;
输出结果来仔细检查结果。