我正在使用MySQL数据库。我完全确定该ID确实存在于数据库中。为什么它会转到最后一个(在哪里说//错误的id)?
<?php
//Localise user id.
$userid = $_SESSION['userid'];
//Get content of the article.
$sql = "SELECT * FROM articles WHERE creatorid = '$userid'";
$result = mysql_query($sql) or die(mysql_error()); //Execute. If fails, show error.
$array = mysql_fetch_array($result);
if(in_array($articleid, $array)) //If the URL id exists in the database (array)
{
//The article does actually exist for that user. They requested it.
$sql = "SELECT * FROM articles WHERE id = '$articleid'";
$result = mysql_query($sql) or die(mysql_error()); //Execute. If fails, show error.
$array = mysql_fetch_array($result);
$content = $array['content'];
if($content != '') //If the article has actually been written.
{
include($_SERVER['DOCUMENT_ROOT'] . '/includes/renderimage.php');
} else
{
//Article actually hasn't been written.
}
} else
{
//Incorrect ID.
}
?>
答案 0 :(得分:1)
您只查看返回的第一行。您需要在循环中调用mysql_fetch_array
以获取每一行。此外,您不应该使用in_array()
,因为文章ID可能出现在其他列中(如果您要检查文章#3和用户#3会怎么样?)。
但是,如果您只想查看该文章是否是由该用户创建的,则可以使用其他查询:
SELECT * FROM articles WHERE creatorid = '$userid' AND articleid = '$articleid';
这应该返回0或1行,具体取决于用户是否创建了文章。然后,您可以使用mysql_num_rows()
对此进行测试。
答案 1 :(得分:0)
您似乎无法正确访问阵列。最重要的是,如果创建者发布了多个文章,那么您将返回多篇文章,因此您的in_array()完全无效。将查询限制更改为一条记录(LIMIT 0,1),并通过调用:
访问创建者ID$result[0]->creatorid or $result['creatorid']
取决于查询资源的方式