首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >转义字符问题

转义字符问题
EN

Stack Overflow用户
提问于 2013-07-08 04:47:57
回答 4查看 87关注 0票数 1

我通常理解使用反斜杠转义引号,或者使用反斜杠进行转义,以便在字符串中包含反斜杠等等,但是我在尝试通过odbc_exec()传递查询并使用表值函数时遇到了一个问题,我似乎就是不能让它停止给我

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SQL error: [Microsoft][ODBC SQL Server Driver][SQL Server]Unclosed quotation mark after the character string '0000005'.

这是我对变量进行硬编码时的样子:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$query = 'SELECT '.$csvCriteria.", googStep, Segment, PrevailingDirection FROM jSelectorCSVCreator('1','1','northbound','0006009','00000050370A2P000004','00060041270B2P000070','1')";

这可以很好地工作。请注意,$csvCriteria没有给我带来任何问题。这就是我想要的样子:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$query = 'SELECT '.$csvCriteria.", googStep, Segment, PrevailingDirection FROM jSelectorCSVCreator('".$stepNum."', '".$segMarker."', '".$prevDirection."', '".$rdNoA."', '".$re_1."', '".$re_2."', '".$directionA."')";

但是,我一直收到关于$re_1和$re_2的错误(我放在顶部的错误)。

我已经尝试了我认为可能有效的多种变体,例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$query = 'SELECT '.$csvCriteria.", googStep, Segment, PrevailingDirection FROM jSelectorCSVCreator('".$stepNum."','".$segMarker."','".$prevDirection."','".$rdNoA.'\',\''.$re_1.'\',\'00060091100B1P000030\',\'1\')';

但我既不精通这一点,也不知道我是否遗漏了什么显而易见的东西。完全卡住了,需要帮手!

EN

回答 4

Stack Overflow用户

发布于 2013-07-08 05:27:14

我不能重复你的错误:

有问题的SQL是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT csvcriteria, 
       googstep, 
       segment, 
       prevailingdirection 
FROM   jselectorcsvcreator('1', '1', 'northbound', '0006009', 
'00000050370A2P000004', '00060041270B2P000070', '1');

将数据放在变量中,例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$csvCriteria   = 'csvCriteria';
$stepNum       = 1;
$segMarker     = 1;
$prevDirection = 'northbound';
$rdNoA         = '0006009';
$re_1          = '00000050370A2P000004';
$re_2          = '00060041270B2P000070';
$directionA    = 1;

使用可以工作的第一行代码和使用不能工作的代码都会返回完全相同的结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$correct = 'SELECT ' . $csvCriteria . ", googStep, Segment, PrevailingDirection FROM jSelectorCSVCreator('1','1','northbound','0006009','00000050370A2P000004','00060041270B2P000070','1')";
$query   = 'SELECT ' . $csvCriteria . ", googStep, Segment, PrevailingDirection FROM jSelectorCSVCreator('" . $stepNum . "','" . $segMarker . "','" . $prevDirection . "','" . $rdNoA . "','" . $re_1 . "','" . $re_2 . "','" . $directionA . "')";

echo $correct . "\n";
echo $query . "\n";

var_dump($correct === $query);

响应为(CodePad):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT csvCriteria, googStep, Segment, PrevailingDirection FROM jSelectorCSVCreator('1','1','northbound','0006009','00000050370A2P000004','00060041270B2P000070','1')
SELECT csvCriteria, googStep, Segment, PrevailingDirection FROM jSelectorCSVCreator('1','1','northbound','0006009','00000050370A2P000004','00060041270B2P000070','1')
bool(true)

我的猜测是$csvCriteria或手边的任何变量都有错误。

我强烈建议在SQL Formatter中查看$query的回显查询(选择MS ACCESS)

票数 1
EN

Stack Overflow用户

发布于 2013-07-08 04:52:32

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$query = 'SELECT '.$csvCriteria.", .....

应该是

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$query = 'SELECT '.$csvCriteria.', ......
票数 0
EN

Stack Overflow用户

发布于 2013-07-08 04:59:10

尝试使用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$query = "SELECT $csvCriteria, googStep, Segment, PrevailingDirection FROM jSelectorCSVCreator('$stepNum','$segMarker','$prevDirection','$rdNoA','$re_1','00060091100B1P000030','1')";

这要简单得多,不需要所有的转义。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17519333

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文