大佬教程收集整理的这篇文章主要介绍了PHP - MS SQL Server 从 PHP 代码传递 xml 参数,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用带有 php 的 MS sql Server,并且 sql Server 存储过程中的列之一是 xml 类型。我在 php 中运行 foreach 语句来迭代数组值并创建一个带有 xml 标记的字符串并将字符串变量传递给 loadXML 和 saveXML。我可以在日志中看到类型为字符串的输出。
要创建的 XML 格式:
'<paramList><i v=".Production"/><i v="IFT"/></paramList>'
$create_env = array();
if(is_array($this->env_ref)) {
$env_values = array_values($this->env_ref);
foreach($env_values as $k => $v) {
$create_env[] = array("ID" => $v);
}
$env_args = $create_env;
$env_xml_args = '<paramList>';
foreach($env_args as $p) {
foreach($p as $_p => $_q) {
$modify_env = strpos($_q,".",0);
if($modify_env !== falsE) {
$modify_env = $modify_env + 1;
$extract_env = substr($_q,$modify_env,strlen($_q));
} else {
$extract_env = $_q;
}
$env_xml_args .= '<i v='."'".$extract_env."'".'/>';
}
}
$env_xml_args .= '</paramList>';
}
$env_str_args = $env_xml_args;
$t_xml = new DOMdocument();
$t_xml->loadXML($env_str_args);
$env_args = $t_xml->saveXML($t_xml->documentElement);
在php中执行的存储过程:
$session_search = array();
$this->dbinstance = $instance;
$this->formatter = "{Call %s.%s.%s(?)}";
$this->sessionSearch = sprintf($this->formatter,db_name,DB_owneR,SEARCH);
$sql = $this->sessionSearch;
$args = array($event_ID_args,$proj_args,$event_name_args,$emp_args,$snap_ticket_args,$start_period_dt_args,$finish_period_dt_args,$is_archived_args,$sort_order_args,$publish_flag_args,$is_archived_proj_args,$IDentity_ID_args,$env_args,$state_args);
error_log(var_dump($args));
$searchStatement = sqlsrv_prepare($this->dbinstance,$sql,$args);
if(!$searchStatement) {
return false;
}
$searchExecuteStatement = sqlsrv_execute($searchStatement);
if(!$searchExecuteStatement) {
return false;
} else {
while($rows = sqlsrv_fetch_array($searchStatement,sqlSRV_FETCH_ASSOC))
{
$session_search[] = array("event_ID" => $rows["ID"],"event_name" => $rows["name"],"event_date_from" => $rows["start"],"event_date_to" => $rows['finish'],"event_project_ID" => $rows["PROjeCTID"],"event_env_ID" => $rows["ENVID"],"event_notes" => $rows["notes"],"event_epm" => $rows["epmname"]);
}
}
sqlsrv_free_stmt($searchStatement);
sqlsrv_close($this->dbinstancE);
return $session_search;
php var_dump 输出:
String(55) "<paramList><i v=".Production"/><i v="IFT"/></paramList>"
存储过程执行没有任何错误并返回所有结果集。当我在 sql 服务器管理工具中使用静态输入执行存储过程时,如上所示,它只检索输入的匹配记录。
我对 sql Server 了解不多,因为我之前只使用 MysqL 作为 php 的后端。任何人都可以提供有关如何将 XML 作为输入传递给列的解决方案的帮助。
我自己修好了。问题是,当 INPUT 传递给存储过程时,SQL 存储过程需要键和值。我只是传递值。
以上是大佬教程为你收集整理的PHP - MS SQL Server 从 PHP 代码传递 xml 参数全部内容,希望文章能够帮你解决PHP - MS SQL Server 从 PHP 代码传递 xml 参数所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。