此 MySQL 查询的 PHP 语法错误

标签 php mysql

MySQL 声称我的查询中有语法错误,但我似乎无法完全修复它。有什么想法吗?

错误指出: “您的 SQL 语法有错误;请检查与您的 MySQL 服务器版本相对应的手册,以获取在 '..''、'0'、''..'、'..' 附近使用的正确语法。 ','','','','','','')' 在第 2 行”

线路在这里:

$savequery = "INSERT INTO search (title, description, url, keywords, type, mod_url, developer, v162, v164, v172)
            VALUES ('$name', '$desc', '$url', '$keywords', '$type', '$link', '$dev', '$v162', '$v164', '$v172')";

此外,这是该查询的“run or die”变量:

$save = $dbsave->query($savequery) or die(mysqli_error($dbsave));

更新:

因为已被请求,所以这是我的变量卫生:

$name = mysql_real_escape_string($name);
$desc = mysql_real_escape_string($desc);
$url = mysql_real_escape_string($url);
$keywords = mysql_real_escape_string($keywords);
$type = mysql_real_escape_string($type);
$link = mysql_real_escape_string($link);
$dev = mysql_real_escape_string($dev);
$v162 = mysql_real_escape_string($v162);
$v162 = mysql_real_escape_string($v164);
$v162 = mysql_real_escape_string($v172);
$id = mysqli_real_escape_string($id);

最佳答案

您应该对每一个变量使用$mysqli->real_escape_string($varHere);。我会使用循环:

$vars = array($name, $desc, $url, $keywords, $type, $link, $dev, $v162, $v164, $v172);
foreach($vars as $v){
  $qA[] = $mysqli->real_escape_string($v); // Object Oriented Style
}
$savequery = "INSERT INTO search (title, description, url, keywords, type, mod_url, developer, v162, v164, v172) VALUES ('$qA[0]', '$qA[1]', '$qA[2]', '$qA[3]', '$qA[4]', '$qA[5]', '$qA[6]', '$qA[7]', '$qA[8]', '$qA[9]')";

如果您不喜欢这些数组变量,那么您可以使用list()

关于此 MySQL 查询的 PHP 语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20714111/

相关文章:

php - 日期未插入 mysql

php - 使用 Laravel Collection 获取重复值

php - 为什么前面没有 "https://"的URL会出现空白页?

php - Codeigniter查询数组不显示第一条记录,但显示其他记录

php - 在谷歌日历上同步约会时收到警告?

php - Drupal 8 自定义注册表单

android - ListView 搜索

Mysql 对结果进行排序而不排除其他结果

加密字段上的 MySQL 索引

MySQL - SELECT * 是否需要所有表字段的索引?