PHP Echo with System Command

时间:2016-01-28 00:30:13

标签: php variables echo

我需要在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系统命令中的回声。如何使它工作?

2 个答案:

答案 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);