php - 在 mySQL 语句中使用双引号和单引号以及字段中的单引号项目时出现问题
问题描述
$_SESSION['ddv'](或 $all_ddv)是一串名称,如下所示:'name 1'、'name 2' 等(注意单引号)。我需要这个字段完全像这样存储(使用 ' 和 ,),因为我稍后会用一个看起来像这样的查询来回忆它:SELECT * FROM ".$tbl"。在哪里voix
(字段 ddv)
问题是每个名称(在单引号之间并用逗号分隔)都被视为新字段条目,并且我收到 SQL 错误 1136 - 字段计数错误。
我尝试了“,”,, to no avail...
Table structure : num, pseudo, title, ddv, visible (trouble is with
ddv字段的所有可能组合)
<?php
//Save the selection to table book_perso
if(isset($_GET["session_save_ddv"])) {
$all_ddv = $_SESSION['ddv'];
echo 'ECHO $all_ddv for debugging : '.$all_ddv.'<br>';
$sql = "INSERT INTO livres_perso VALUES ('num','$_GET[pseudo]', '$_GET[title]', '$all_ddv','0')";
if (mysql_query($sql)) {
echo "New record created successfully !";
} else {
echo "** Error: " . $sql . "<br>" . mysql_errno();
}
}
?>
在表中我想要:2 ¦ my pseudo ¦ my title ¦ 'john', 'anne', 'ed' ¦ 1 ¦
解决方案
您应该转换为 PDO 或 MySQLI 并使用准备好的语句,而不是将变量替换为 SQL 字符串。但在你能做到这一点之前,你需要使用mysql_real_escape_string()
转义字符串,以防止 SQL 注入和转义引号。
$pseudo = mysql_real_escape_string($_GET['pseudo']);
$title = mysql_real_escape_string($_GET['title']);
$all_ddv = mysql_real_escape_string($_SESSION['ddv']);
$sql = "INSERT INTO livres_perso VALUES ('num', '$pdeudo', '$title', '$all_ddv','0')";
推荐阅读
- apache-kafka - 春季云流kafka客户端异常
- html - Angular 6 - 如何在订阅()中停止无限轮询
- autodesk-forge - Autodesk 用户管理 API
- javascript - 当我最小化窗口时,如何控制应该显示图像的哪些部分?
- python - 如何返回字符串向量匹配的numpy矩阵行的索引?
- python - Python 3.7.3 路径和 VS 代码冲突
- python - 如何使用 AWS CLI 创建 python AWS Lambda 函数?
- javascript - 如何从 php 中的 soundcloud 剧集获取最新剧集?
- php - 如何根据 ID 回显 WordPress 图像
- snapchat - Snapkit 中的friendUserId 是什么?