Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
显示名称而不是ID PHP MySQL_Php_Mysql - Fatal编程技术网

显示名称而不是ID PHP MySQL

显示名称而不是ID PHP MySQL,php,mysql,Php,Mysql,我需要一些简单的东西;我有一个页面,用户点击作者可以看到与该作者相关的书籍。在我为作者显示书籍列表的页面上,我想要一个简单的HTML标题,上面写着:“the books for:AUTHORNAME” 我可以让页面显示作者ID,但不能显示姓名。当用户单击作者上一页中的链接时,看起来如下所示: <a href="viewauthorbooks.php?author_id=<?php echo $row['author_id']?>"><?php echo $row['

我需要一些简单的东西;我有一个页面,用户点击作者可以看到与该作者相关的书籍。在我为作者显示书籍列表的页面上,我想要一个简单的HTML标题,上面写着:“the books for:AUTHORNAME”

我可以让页面显示作者ID,但不能显示姓名。当用户单击作者上一页中的链接时,看起来如下所示:

<a href="viewauthorbooks.php?author_id=<?php echo $row['author_id']?>"><?php echo $row['authorname']?></a>

然后在“viewauthorbooks.php?author_id=23”中,我一开始就声明了这一点:

$author\u id=$\u GET['author\u id']; $authorname=$\u获取['authorname']

最后,“AUTHORNAME的书,上面写着AUTHORNAME,我有:

echo$authorname


(使用PHP标记,但它不允许我将它们放入!)这不会显示任何内容,但是如果我将其更改为author_id,它会显示已单击的正确的author id,但这并不完全是用户友好的!!有人能帮我吗

您不在查询字符串中发送它,因此无法从$\u get数组中获取它。
只需使用id从数据库中请求它


一个重要注意事项:在显示来自客户端的数据时,始终使用
htmlspacialchars()

作者姓名不在$\u GET中。按照您的代码,您只能将其用作链接标题。这不是地址上的任何地方。请尝试以下方法:

<a href="viewauthorbooks.php?author_id=<?php echo $row['author_id']?>&authorname=<?php echo $row['authorname']?>"><?php echo $row['authorname']?></a>
这样做的目的是将用户发送到viewauthorbooks,并将值“13”放在
$\u GET
变量中:
$\u GET['author\u id']
。这就是作者id存在并显示在viewauthorbooks上的原因。但是,authorname从未传递给viewauthorbooks,它不在
$\u GET['authorname']
中,因为您从未设置
$\u GET['authorname']
。如果希望它位于
$\u GET
,则需要查询字符串如下所示:

viewauthorbooks.php?author_id=13&authorname=bob
您可以使用我上面发布的链接的新HTML代码来实现这一点。仔细看,这与你现在所拥有的有一个关键的区别


但是,通常不鼓励通过GET传递数据,因为查询字符串会显示给用户,并且会让您面临注入攻击。更好的方法是使用您已经传递到viewauthorbooks.php的author\u id再次从数据库检索authorname。您可以使用与new.php页面相同的代码。

这是因为您没有在get中定义作者名称

您应该将以下内容设置为您的url:

<a href="viewauthorbooks.php?author_id=<?php echo $row['author_id']?>&authorname=<?php echo $row['authorname']?>"><?php echo $row['authorname']?></a>


或者,在新页面上,使用从URI检索到的ID再次从数据库中选择数据。

您可以像使用
$\u GET
一样从查询字符串中提取
作者ID
,但是注意您需要验证查询所得到的信息。我希望你能在没有验证的情况下看到这是一个多么糟糕的安全漏洞

我现在正在工作,但这是一个快速的例子,可以在不清理查询的情况下为您提供所需的信息

$id = intval($_GET['author_id']); 
// of course, perform more validation checks
// just don't assume its safe.
$sql = "SELECT authorname FROM authors_tb WHERE author_id=" . $id;
$result = mysql_query($sql);
while($row = mysql_fetch_array($result)) {
   echo "The books for: " . $row['authorname'];
 }

您的方法不起作用的原因是因为您使用了传递给author\u name的URL参数,而您没有在URL中提供参数,只有
author\u id

您确定
$row['authorname']
有值吗?如何从数据库中检索作者的姓名?
$\u GET['authorname']
用于什么?在我的authors表中,我将'authorname'作为一个值,这是您的意思吗?我的意思是,您确定从查询返回表中的值吗?您是否可以执行
var\u dump
并查看它是否实际存在。我将此作为一个查询:$sql=“SELECT author\u id,authorname FROM authors\u tb WHERE author\u id=”.$author\u id;另外,我不知道如何进行var_转储?我以前从未遇到过这个问题对不起:坐着没事,从下面的回答中我能更好地理解你的问题。另外,每个回复的人都给了你一个合适的答案。这就是我(在新页面上)试图做的:$sql=“选择作者id,authorname FROM authors\u tb WHERE author\u id=”.$author\u id“我是否弄错了要点,甚至语法?这就是我(在新页面上)试图做的:$sql=“选择作者id,authorname FROM authors_tb WHERE author_id=“.$author_id”我是否理解错了要点,甚至语法?您的选择很好,但是,在php中变量不会跨页面传输。您没有将authorname值传递到viewauthorbooks.php页面的任何位置。您需要以某种方式将authorname值发送到viewauthorbooks.php。你可以使用我上面发布的链接,通过$\u GET完成。或者您可以使用作者id,在viewauthorbooks.php页面上再次运行相同的查询。@Downvoter,答案有什么问题?我一定会修改的。为了使它
$id=intval($\u GET['author\u id'])只长8个字符。而你却花了10倍多的时间来获得无用的评论。有没有想过你的代码会仅仅是复制的?你是绝对正确的,我花了太多的时间来编辑答案,没有什么特别的细节,错过了重要的部分。没有争论。我修改了我的答案,希望能弥补它。
$id = intval($_GET['author_id']); 
// of course, perform more validation checks
// just don't assume its safe.
$sql = "SELECT authorname FROM authors_tb WHERE author_id=" . $id;
$result = mysql_query($sql);
while($row = mysql_fetch_array($result)) {
   echo "The books for: " . $row['authorname'];
 }