创建 URL 和未定义的索引 ID

Creating URL and Undefined Index ID

提问人:Zlini 提问时间:5/3/2016 更新时间:5/3/2016 访问量:357

问:

我正在创建一个链接到我的 Facebook 帐户的博客网站,我想允许用户查看较旧的博客。因此,我正在创建一个循环,该循环根据标题输出 url,然后根据blog_id动态生成一个新页面。但是,我有两个问题。

  1. 我只输出一个超链接,因此无法正确循环
  2. 标题.php页面上没有生成任何内容,并且在通过 url 提交数据时,我收到了未定义的索引blog_id

==============================

$query="SELECT title FROM admin WHERE blog_id = $blog_id";
$result=mysqli_query($conn, $query) or die(mysqli_error());
$rstitle=mysqli_fetch_assoc($result);


mysqli_close($conn);


do { ?>
<a href="title.php?blog_id= <?php echo $rstitle['blog_id']; ?> ">
<ul>
<li id = "title"> <?php echo $rstitle['title']; ?> </li><br />
</ul>
</a>

<?php } while ($rstitle=mysqli_fetch_assoc($result)) ?>

哪个链接到标题.php页面

<?php
$servername = "localhost";
$dbusername = "root";
$dbpassword = "";
$dbname = "blog";

// create connection
$conn = mysqli_connect($servername, $dbusername, $dbpassword, $dbname);

// check connection
if (!$conn)
{
    die("Connection failed: " . mysqli_connect_error());
}
// we get here the connection to the database was successful



$query="SELECT blog FROM admin WHERE blog_id = $blog_id";
$result=mysqli_query($conn, $query)or die(mysql_error());
$rstitle=mysqli_fetch_assoc($result);

if (mysqli_num_rows($result) > 0)
{
    echo "<table border='0' style='width:50%'>";


    while($rstitle = mysqli_fetch_assoc($result))
    {
        echo "<tr>";
        echo "<td>" . $rstitle['blog'] . "</td>";
        echo "</tr>";
    }
    echo "</table>";
}



mysqli_close($conn);

?>
php mysql 未定义索引

评论

0赞 fusion3k 5/3/2016
您只选择标题,因此在数组中只有键。用titleSELECT blog_id, title
0赞 Rajdeep Paul 5/3/2016
标题.php页面上,您没有使用superglobal捕获博客ID。$_GET

答:

0赞 random_user_name 5/3/2016 #1

代码的第一部分有几个问题。在这里,它进行了清理,并带有注释以帮助您显示更改:

// Add "blog_id" to the list of fields selected here, so available below
$query="SELECT blog_id, title FROM admin WHERE blog_id = $blog_id";
$result=mysqli_query($conn, $query) or die(mysqli_error());
$rstitle=mysqli_fetch_assoc($result);

// Use the "while () {}" construction - it's easier to read
while ( $rstitle = mysqli_fetch_assoc( $result ) ) { 
// You had a space between blogid= and the ID - this will cause problems, so removed the space 
?>
<a href="title.php?blog_id=<?php echo $rstitle['blog_id']; ?> ">
<ul>
<li id = "title"> <?php echo $rstitle['title']; ?> </li><br />
</ul>
</a>
<?php }  
// close your connection - (not necessary) - at the END of your code
mysqli_close($conn);
?>

这应该可以解决您在该部分中的问题,并将创建一个适当的链接列表。Undefined Index

在您的代码中(下面仅复制了其中的一部分),您没有在任何地方进行设置title.php$blog_id

$servername = "localhost";
$dbusername = "root";
$dbpassword = "";
$dbname = "blog";

// create connection
$conn = mysqli_connect($servername, $dbusername, $dbpassword, $dbname);

// check connection
if ( ! $conn ) {
    die("Connection failed: " . mysqli_connect_error());
}

// Since the blog_id is being passed in the URL, get it.
// And since you're NOT preparing your query, but passing it straight in,
// we have to be sure to SANITIZE it:
$blog_id = ( isset( $_GET['blog_id'] ) ) ? (int)$_GET['blog_id'] : 0;

// I would recommend defending against no blog_id!
if ( ! $blog_id ) {
    echo 'Invalid blog id!';
    die();
}

$query="SELECT blog FROM admin WHERE blog_id = $blog_id";
$result=mysqli_query($conn, $query)or die(mysql_error());
$rstitle=mysqli_fetch_assoc($result);

评论

0赞 Zlini 5/4/2016
感谢您的修复,第一页上的问题是由错误的 SELECT 语句引起的,如果没有您的帮助,我永远无法弄清楚一旦我通过 ID,我需要对blog_id进行消毒。