头部破坏MYSQL错误1064什么';我的语法有什么问题?
我盯着这个看了一会儿,觉得我没有意识到显而易见的事情 结果显示为1064(mysql参考称这是一个语法错误) 我应该注意,$allVals是一个编码的json对象 我的查询有什么问题头部破坏MYSQL错误1064什么';我的语法有什么问题?,mysql,sql,syntax,mysql-error-1064,Mysql,Sql,Syntax,Mysql Error 1064,我盯着这个看了一会儿,觉得我没有意识到显而易见的事情 结果显示为1064(mysql参考称这是一个语法错误) 我应该注意,$allVals是一个编码的json对象 我的查询有什么问题 $query .= "'' , " ; 你漏了一句话 $query .= "'' , '" ; 我应该做这项工作 我也会考虑使用准备好的语句来更好地了解语法错误可能在哪里;当您尝试像这样构建查询时,调试它可能会更加困难 $stmt = $con->prepare("INSERT INTO members
$query .= "'' , " ;
你漏了一句话
$query .= "'' , '" ;
我应该做这项工作
<>我也会考虑使用准备好的语句来更好地了解语法错误可能在哪里;当您尝试像这样构建查询时,调试它可能会更加困难
$stmt = $con->prepare("INSERT INTO members ( id , username , password , all , articles ) VALUES ( '', ?, ?, ?, '')");
$stmt->bind_param("sss", $username, $password, $allVals);
$stmt->execute();
/* ... */
你漏了一句话
$query .= "'' , '" ;
我应该做这项工作
<>我也会考虑使用准备好的语句来更好地了解语法错误可能在哪里;当您尝试像这样构建查询时,调试它可能会更加困难
$stmt = $con->prepare("INSERT INTO members ( id , username , password , all , articles ) VALUES ( '', ?, ?, ?, '')");
$stmt->bind_param("sss", $username, $password, $allVals);
$stmt->execute();
/* ... */
似乎在
$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);
}
似乎在
$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);
}
您必须在每个值后面加上公共值
$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);
}
您必须在每个值后面加上公共值
$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);
}
如果未将数据插入
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);
}
此外,您需要确保变量已正确转义。如果您没有将数据插入
id
或文章
列,请不要将它们作为查询语句的一部分:
$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);
}
此外,您需要确保变量被正确转义。我喜欢这样做:
$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);
您可以通过检查what
echo$query来再次检查结果代码>输出。我喜欢这样做:
$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);
您可以通过检查whatecho$query来再次检查结果代码>输出。你有没有回音?对于传递的任何值,似乎都没有初始引号。但是既然您使用的是mysqli,为什么不使用预先准备好的语句呢?语法错误到底在哪里?请发布整个错误消息。此外,您可能不需要在id列中插入任何内容,假设它是一个自动递增的字段。谢谢大家。那是丢失的撇号。非正式的回答***你重复了吗?对于传递的任何值,似乎都没有初始引号。但是既然您使用的是mysqli,为什么不使用预先准备好的语句呢?语法错误到底在哪里?请发布整个错误消息。此外,您可能不需要在id列中插入任何内容,假设它是一个自动递增的字段。谢谢大家。那是丢失的撇号。非正式回答***你是正确的,这解决了问题谢谢。你是正确的,这解决了问题谢谢。顺便说一句,不是downvoter,而是这个字符“,”被称为逗号,不常见。正确的形式是“在每一个值之后”,而不是“值”。谢谢你的纠正!!!没关系,没问题)顺便说一句,不是downvoter,但是这个字符“,”叫做逗号,不常见。正确的形式是“在每一个值之后”,而不是“值”。谢谢你的纠正!!!没关系,没问题。id
仍然是不必要的,如Andrewsi的评论所述。@MarcelKorpel我不知道它是否是自动递增的主键。id
仍然是不必要的,如Andrewsi的评论所述。@MarcelKorpel我不知道它是否是自动递增的主键。