[英]How use multiple conditions in xpath query?
$elements = $xpath->query(
"//message[(@sender ='".$from." and @receiver = '".$username."') or
(@receiver='unread' and @sender = '".$username."')]"
);
此代码有什么问题? 我需要从我的xml文件中SELECT data WHERE ((sender == from AND receiver = username)OR(sender == username AND receiver = from))
请改用sprintf
。 它不那么混乱,错误更容易发现。
$query = sprintf(
'//message[
(@sender = "%1$s" and @receiver = "%2$s") or
(@receiver="unread" and @sender = "%2$s")
]',
$from,
$receiver
);
另外,请确保清理$from
和$receiver
以防止XPath Injection攻击 。
您在此部分之后缺少右引号:
(@sender ='".$from."
您的一般方法没有错。
代码的问题之一是您将自己暴露于注入攻击。 您真的相信$ from和$ username是简单的字符串吗? 与使用字符串连接构建查询相比,建立一个参数化查询(其中将参数从外部提供)要安全得多(并且更快)。 我不知道您使用的PHP API是否允许您这样做。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.