如何在MySQLI / PHP中使用$ _GET从URL中提取整数以绑定到SQL语句中?
制作一个博客式页面,其中内容存储在数据库中,这意味着可以有多个页面而无需大量文件。
在索引页面上,有指向这些页面的链接,一旦单击,URL就会更改为已发布ID的博客页面:
pages / article.php?id = 1
这是-
for($x=0;$x<$articlesFetched;++$x){
$row=mysqli_fetch_array($data);
//create div
echo '<div class="col-lg-4 col-md-6 col-sm-6 col-xs-12" id="articleDiv">';
echo "<img class='img-responsive' id='articleImage' src=".$row['articleThumbnail'].">";
echo '<h5><a href="article.php?id='.$row['articleId'].'">'.$row['articleHeadline'].'</a></h5>';
echo '<p>',$row['articleSummary']," ",'</p>';
echo '<div class="row">';
echo '<p>' , $row['articleTopic']," | ",'</p>';
echo '<p>', $row['articleSubTopic']," | ",'</p>';
echo '<p>',$row['articleDate']," | ",'</p>';
echo '</div>';
echo '</div>';
}
PS-请原谅,缩进,复制和粘贴似乎弄乱了格式。
为了区分页面内容之间的区别,我使用了一个ID,该ID可以绑定到SQL语句,例如'SELECT * FROM table WHERE id=?'
在这里:
$id=$_GET['articleId'];
$stmt = $conn->prepare("SELECT * FROM Article WHERE articleId=?");
$stmt->bind_param("i",$id);
$stmt->execute();
但是,当打开网页时,没有内容,因为存在未定义的索引错误,指向$id=$_GET['articleId'];
在检查是否设置了$id=$_GET['articleId'];
变量时,输出为FALSE。
答案 0 :(得分:2)
实际上,您的网址变成了这样的样子:-
article.php?id=1 //for example
所以您需要做:-
$id = $_GET['id']; // not $_GET['articleId']
答案 1 :(得分:0)
在$_GET
中,您使用了articleId
,但在URL上粘贴的是id
。这两个名称必须相同,然后才能获取数据。
例如
www.yoursite.com/category?q=myname
<?php
echo $_GET['q']; //Output: myname
?>
答案 2 :(得分:0)
您的网址pages/article.php?id=1
但是您使用$id=$_GET['articleId'];
您简单地使用它$id=$_GET['id'];
代码:
$id=$_GET['id'];
$stmt = $conn->prepare("SELECT * FROM Article WHERE articleId=?");
$stmt->bind_param("i",$id);
$stmt->execute();