我通常理解使用反斜杠转义引号,或者使用反斜杠进行转义,以便在字符串中包含反斜杠等等,但是我在尝试通过odbc_exec()
传递查询并使用表值函数时遇到了一个问题,我似乎就是不能让它停止给我
SQL error: [Microsoft][ODBC SQL Server Driver][SQL Server]Unclosed quotation mark after the character string '0000005'.
这是我对变量进行硬编码时的样子:
$query = 'SELECT '.$csvCriteria.", googStep, Segment, PrevailingDirection FROM jSelectorCSVCreator('1','1','northbound','0006009','00000050370A2P000004','00060041270B2P000070','1')";
这可以很好地工作。请注意,$csvCriteria没有给我带来任何问题。这就是我想要的样子:
$query = 'SELECT '.$csvCriteria.", googStep, Segment, PrevailingDirection FROM jSelectorCSVCreator('".$stepNum."', '".$segMarker."', '".$prevDirection."', '".$rdNoA."', '".$re_1."', '".$re_2."', '".$directionA."')";
但是,我一直收到关于$re_1和$re_2的错误(我放在顶部的错误)。
我已经尝试了我认为可能有效的多种变体,例如:
$query = 'SELECT '.$csvCriteria.", googStep, Segment, PrevailingDirection FROM jSelectorCSVCreator('".$stepNum."','".$segMarker."','".$prevDirection."','".$rdNoA.'\',\''.$re_1.'\',\'00060091100B1P000030\',\'1\')';
但我既不精通这一点,也不知道我是否遗漏了什么显而易见的东西。完全卡住了,需要帮手!
发布于 2013-07-08 05:27:14
我不能重复你的错误:
有问题的SQL是:
SELECT csvcriteria,
googstep,
segment,
prevailingdirection
FROM jselectorcsvcreator('1', '1', 'northbound', '0006009',
'00000050370A2P000004', '00060041270B2P000070', '1');
将数据放在变量中,例如:
$csvCriteria = 'csvCriteria';
$stepNum = 1;
$segMarker = 1;
$prevDirection = 'northbound';
$rdNoA = '0006009';
$re_1 = '00000050370A2P000004';
$re_2 = '00060041270B2P000070';
$directionA = 1;
使用可以工作的第一行代码和使用不能工作的代码都会返回完全相同的结果:
$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):
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)
发布于 2013-07-08 04:52:32
$query = 'SELECT '.$csvCriteria.", .....
应该是
$query = 'SELECT '.$csvCriteria.', ......
发布于 2013-07-08 04:59:10
尝试使用
$query = "SELECT $csvCriteria, googStep, Segment, PrevailingDirection FROM jSelectorCSVCreator('$stepNum','$segMarker','$prevDirection','$rdNoA','$re_1','00060091100B1P000030','1')";
这要简单得多,不需要所有的转义。
https://stackoverflow.com/questions/17519333
复制相似问题