我完全复制了此网站的代码:http://davidwalsh.name/web-service-php-mysql-xml-json,如下所示,
/* require the user as the parameter */
if(isset($_GET['user']) && intval($_GET['user'])) {
/* soak in the passed variable or set our own */
$number_of_posts = isset($_GET['num']) ? intval($_GET['num']) : 10; //10 is the default
$format = strtolower($_GET['format']) == 'json' ? 'json' : 'xml'; //xml is the default
$user_id = intval($_GET['user']); //no default
/* connect to the db */
$link = mysql_connect('localhost','username','password') or die('Cannot connect to the DB');
mysql_select_db('db_name',$link) or die('Cannot select the DB');
/* grab the posts from the db */
$query = "SELECT post_title, guid FROM wp_posts WHERE post_author = $user_id AND post_status = 'publish' ORDER BY ID DESC LIMIT $number_of_posts";
$result = mysql_query($query,$link) or die('Errant query: '.$query);
/* create one master array of the records */
$posts = array();
if(mysql_num_rows($result)) {
while($post = mysql_fetch_assoc($result)) {
$posts[] = array('post'=>$post);
}
}
/* output in necessary format */
if($format == 'json') {
header('Content-type: application/json');
echo json_encode(array('posts'=>$posts));
}
else {
header('Content-type: text/xml');
echo '<posts>';
foreach($posts as $index => $post) {
if(is_array($post)) {
foreach($post as $key => $value) {
echo '<',$key,'>';
if(is_array($value)) {
foreach($value as $tag => $val) {
echo '<',$tag,'>',htmlentities($val),'</',$tag,'>';
}
}
echo '</',$key,'>';
}
}
}
echo '</posts>';
}
/* disconnect from the db */
@mysql_close($link);
}
并且php没有执行,它只显示为纯文本。什么是有效的?主机支持PHP,我用它来运行Wordpress博客和其他东西。
答案 0 :(得分:3)
有几个原因可能会显示为文本而非执行。
首先,它缺少<?php
和?>
标记。如果没有这些,PHP会认为您只想将此文件中的所有内容发送到浏览器。
如果您正在使用Apache,则需要告诉Apache执行这些文件(通常您会告诉Apache使用PHP解释器执行以.php结尾的所有文件)。
您的主机可能要求您将所有可执行文件放在某个目录中。请务必按照他们的说明设置网站。
答案 1 :(得分:2)
尝试将所有代码包装在&lt;?php和?&gt;
中答案 2 :(得分:1)
没有<?php
标记。它被命名为.php文件吗?
答案 3 :(得分:1)
把它放在<?php ?>
??