如何从网址获取ID值?

时间:2011-11-14 13:11:37

标签: php mysql forums reply

我正在尝试使用教程创建自己的论坛。我已经解决了很多错误,我还有1个要做。

当您在线程上发布回复时,它会将您的回复保存在MySQL数据库中。你的回复将有一个与你回复的线程ID匹配的int,称为question_id。

我无法获取代码以从URL栏获取线程ID。

以下是应该完成工作的2行代码:

$id = $_GET['id'];

$sql2="INSERT INTO $tbl_name(question_id, a_id, a_name, a_email, a_answer, a_datetime)VALUES('$id', '$Max_id', '$a_name', '$a_email', '$a_answer', '$datetime')";

这是整个文件add_answer.php

<?php

$host="XXXXXX"; // Host name
$username="XXXXXX"; // Mysql username
$password="XXXXXX"; // Mysql password
$db_name="XXXXXX"; // Database name
$tbl_name="XXXXXX"; // Table name

// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");

// Get value of id that sent from hidden field
$id = $_GET['id'];
var_dump($id);

// Find highest answer number.
$sql="SELECT MAX(a_id) AS Maxa_id FROM $tbl_name WHERE question_id='$id'";
$result=mysql_query($sql);
$rows=mysql_fetch_array($result);

// $result=mysql_query($sql) or die(mysql_error());

// add + 1 to highest answer number and keep it in variable name "$Max_id". if there no answer yet set it = 1
if ($rows) {
    $Max_id = $rows['Maxa_id']+1;
}
else {
    $Max_id = 1;
}

// get values that sent from form
$a_name=$_POST['a_name'];
$a_email=$_POST['a_email'];
$a_answer=$_POST['a_answer'];

$datetime=date("d/m/y H:i:s"); // create date and time

// Insert answer
$sql2="INSERT INTO $tbl_name(question_id, a_id, a_name, a_email, a_answer, a_datetime)VALUES('$id', '$Max_id', '$a_name', '$a_email', '$a_answer', '$datetime')";
$result2=mysql_query($sql2) or die(mysql_error());

if($result2)
{
    echo "Successful<BR>";
    echo "<meta http-equiv='refresh' content='4;url=index.php?content=main_forum' />";

    // If added new answer, add value +1 in reply column
    $tbl_name2="forum_question";
    $sql3="UPDATE $tbl_name2 SET reply='$Max_id' WHERE id='$id'";
    $result3=mysql_query($sql3);

}
else {
    echo "An error as occured. Please report this to administrator. ID: FAA01.";
}

mysql_close();
?>

5 个答案:

答案 0 :(得分:2)

你的$ _GET [id]应该在用它触摸mysql之前进行清理。就目前而言,您对数据库的攻击非常真实。我建议使用PDO

重新学习一些东西很糟糕,但如果你正在学习,那么做得更好。

关于你的问题......我不知道。我会尝试echo $ sql2;并确保查询看起来正确。还有print_r($ _ GET)来查看你的get数组。

答案 1 :(得分:2)

  1. $_GET['id']是否存在?在,它是否实际存在于URL中?使用的确切URL是什么?仔细检查没有任何大写字母,因为你似乎混合了很多案例(提示:代码中只使用小写字母)

  2. 了解addslashesmysql_real_escape_string,否则有人会将您的服务器减少到熔化的残骸。

  3. 您有冗余错误检查。

    $result2=mysql_query($sql2) or die(mysql_error());
    // ...
    if( $result2) {...} else {...}
    
  4. 最后一位是多余的,因为如果$result2为假,那么它已经死了。

答案 2 :(得分:2)

你必须一次调试一件事!你说:

  

我无法获取我的代码以从网址栏获取线程ID。

所以首先要看的是浏览器的位置栏,其中包含URL。如果第一行代码不正确,为什么要关心下一百行代码呢?如果您的线程ID是999,并且您希望此代码获取此类ID:

$id = $_GET['id'];

...您需要在id=999符号(必须)之后和?符号(可选)之前在网址中看到#

如果ID不在此处,您应该收到通知:

  

注意:未定义索引:id

如果不这样做,则表示您尚未正确配置PHP。最简单的方法是找到您的php.ini文件,设置这些指令:

error_reporting = E_ALL
display_errors = On

...然后重新启动您的网络服务器。

最后,学会使用var_dump()

答案 3 :(得分:1)

如果您的表单是由post发送的,那么您应该获得以下代码:

$id = $_POST['id'];

答案 4 :(得分:0)

如果要从URL获取价值,则必须使用PHP $ _ GET [] 方法来获取信息或价值。 重要的不是:如果数据库中没有图像,请使用本教程在数据库中插入一些图像。

您可以看到以下代码和链接,以获取有关

的更多信息

PHP $ _GET方法 $ _GET方法是PHP的超级全局方法。

用于解析浏览器URL并通过id扫描并检索给定的参数或信息。

点击下面的链接以获取有关本教程的更多信息。

https://www.campuslife.co.in/Php/how-to-get-id-from-one-page-to-another-page.php

首页的页面ID码

<a href="display.php?myid=<?php echo $img_id; ?>" target="new window">
    <img src="<?php echo $img_id; ?>" title="Nature Image" />
</a>
第二页的

$ _ GET方法代码

$id = $_GET["myid"];

点击下面的链接以逐步获取信息。

https://www.campuslife.co.in/Php/how-to-get-id-from-one-page-to-another-page.php