我需要在php系统命令中调用变量($ id)。我正在自动执行solr curl delete命令,它使用静态id,但我需要回显$ id,以便删除正确的文档。
代码是:
<?php
echo '<pre>';
$last_line = system('curl http://localhost:8983/solr/imagedb/update?commit=true --data \'<delete><query>id\:<?php echo $id; ?></query></delete>\' -H \'Content-type:text/xml; charset=utf-8\'', $retval);
// Printing additional info
echo '
</pre>
<hr />Last line of the output: ' . $last_line . '
<hr />Return value: ' . $retval;
?>
代码显示没有错误,但文档未被删除,因此它没有抓取$ id变量。它是一个php系统命令中的回声。如何使它工作?
答案 0 :(得分:1)
您不能在字符串中使用<?php echo $id; ?>
。这只适用于您执行PHP执行模式的情况。使用字符串连接。
$last_line = system('curl http://localhost:8983/solr/imagedb/update?commit=true --data \'<delete><query>id\:' . $id . '</query></delete>\' -H \'Content-type:text/xml; charset=utf-8\'', $retval);
答案 1 :(得分:0)
删除php
代码,并在system
来电中将变量括在单引号中。现在,您的variable
以及php标记将作为字符串传递。
所以更新这一行:
$last_line = system('curl http://localhost:8983/solr/imagedb/update?commit=true --data \'<delete><query>id\:<?php echo $id; ?></query></delete>\' -H \'Content-type:text/xml; charset=utf-8\'', $retval);
为:
$last_line = system('curl http://localhost:8983/solr/imagedb/update?commit=true --data \'<delete><query>id\:'.$id.'</query></delete>\' -H \'Content-type:text/xml; charset=utf-8\'', $retval);