我正在插入数据库,其中我尝试转义的其中一列是用户可能键入的单引号。例如,it's
,
我正在使用codeigniter框架并执行以下操作来转义我的列:
$test=$this->db->escape($test);
但是当我提交时,我收到了SQL-Server错误。例如,如果我输入it's
,它会尝试执行此操作
INSERT INTO table (test) VALUES(''it''s'')
什么时候应该
INSERT INTO table (test) VALUES('it''s')
为什么要插入额外的单引号?
答案 0 :(得分:0)
当您只应转义要插入的字符串时,您正在转义整个SQL语句。例如,假设您当前有以下代码。
COUNTER=1
LAST_COMMIT=`git log remotes/origin/devel --pretty=oneline --pretty=format:%s | head -${COUNTER}`
JIRA_ID=`echo $LAST_COMMIT | grep -o -P '[A-Z]{2,}-\d+' | xargs`
while [[ ! -z "$JIRA_ID" && $COUNTER -lt "5" ]]; do
echo "This is the current counter: $COUNTER"
echo "This is the last commit $LAST_COMMIT"
COUNTER=$[COUNTER+1]
done
echo "this is the counter outside the loop $COUNTER"
您应将其更改为
$test = "INSERT INTO table (test) VALUES ('" . $value . "');";
正如Liam指出的那样,由于您使用的是Codeigniter,您可能还需要考虑使用它们提供的查询绑定。有关详细信息,请参阅此网址:https://ellislab.com/codeigniter/user-guide/database/queries.html