【问题标题】:Using XQuery with PHP Variables将 XQuery 与 PHP 变量一起使用
【发布时间】:2014-03-05 07:28:50
【问题描述】:
我正在尝试使用 php 运行 xquery。我已经获得了某些要运行的查询,但是,我不确定如何在其中使用变量。我一直在寻找一段时间,但很少有参考。
谢谢。
这是变量和查询:
$contype=$_POST['ctype'];
$cnumber=$_POST['number'];
$cid = $_POST['id'];
$query = 'UPDATE clients SET phone = xmlquery(\'transform copy $pn := $num modify do insert
document{
<contact type="$contype">
<phoneno>$cnumber</phoneno>
</contact>
}
into $pn/phone
return $pn\'
passing clients.phone as "num")
where id =$cid';
【问题讨论】:
标签:
php
xml
variables
xquery
【解决方案1】:
对于 PHP,这只是一个 string。您使用的是单引号,因此字符串中的变量不会被替换。您可以将静态部分与动态部分连接起来,使用双引号字符串,使用sprintf(),...
$foo = 'Hello '.$name.'!';
$foo = "Hello $name!";
$foo = sprintf('Hello %s!', $name);
根据您使用字符串的方式,可以选择准备好的语句。他们负责避免 SQL 注入可能需要的转义。
【解决方案2】:
谢谢! PHP 确实有办法处理这些事情,即使对于 XQuery 也是如此。这是我所做的:
$contype=$_POST['ctype'];
$cnumber=$_POST['number'];
$cid = $_POST['id'];
$query = 'UPDATE clients SET phone = xmlquery(\'transform copy $pn := $num modify do insert
document{
<contact type="'.$contype.'">
<phoneno>'.$cnumber.'</phoneno>
</contact>
}
into $pn/phone
return $pn\'
passing clients.phone as "num")
where id =$cid';
这也是为了帮助其他人制作相同类型的应用程序。 :)