Как я могу получить значение идентификатора из URL? - PullRequest
0 голосов
/ 14 ноября 2011

Я пытаюсь создать свой собственный форум, используя учебник. Я уже исправил довольно много ошибок, и мне осталось сделать 1.

Когда вы публикуете ответ в теме, он сохраняет ваш ответ в базе данных MySQL. Ваш ответ будет иметь int, который совпадает с идентификатором потока, на который вы ответили, и называется question_id

Я не могу получить свой код, чтобы получить идентификатор потока из строки URL.

Это две строки кода, которые должны выполнить работу:

$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 ]

2 голосов
/ 14 ноября 2011

Вы должны отлаживать одну вещь одновременно!Вы говорите:

Я не могу получить свой код, чтобы получить идентификатор потока из строки URL.

, поэтому первое место, на которое нужно обратить внимание, - это строка адреса вашего браузера, гдеURL есть.Зачем заботиться о следующих сотнях строк кода, если первая не верна?Если ваш идентификатор потока равен 999, и вы хотите, чтобы этот код извлекал такой идентификатор:

$id = $_GET['id'];

... вам нужно видеть id=999 в URL после символа ? (что является обязательным)и перед символом # (который является необязательным).

Если ID не указан, вы должны получить уведомление:

Примечание: неопределенный индекс: id

Если вы этого не сделаете, вы неправильно настроили PHP.Самый простой способ - найти файл php.ini, установить следующие директивы:

error_reporting = E_ALL
display_errors = On

... и перезапустить веб-сервер.

Наконец, научитесь использовать var_dump () .

2 голосов
/ 14 ноября 2011

ваш $ _GET [id] должен быть очищен перед тем, как прикоснуться к нему mysql. В настоящий момент вы находитесь в реальной опасности атаки на вашу базу данных. Я предлагаю использовать PDO

Это отстой, чтобы заново выучить что-то, но если вы учитесь, лучше сделать это правильно.

Что касается твоего вопроса ... я не знаю. Я бы попробовал echo $ sql2; и убедитесь, что запрос выглядит правильно. Также print_r ($ _ GET), чтобы увидеть ваш массив get.

2 голосов
/ 14 ноября 2011
  1. Существует ли $_GET['id']? Как, на самом деле это присутствует в URL? Какой точный URL используется? Перепроверьте, нет ли заглавных букв на пути, поскольку вы, похоже, много смешивает регистры (совет: используйте только строчные буквы в коде)

  2. Узнайте о addslashes и mysql_real_escape_string, иначе кто-то превратит ваш сервер в плавленую крушку.

  3. У вас есть избыточная проверка ошибок.

    $result2=mysql_query($sql2) or die(mysql_error());
    // ...
    if( $result2) {...} else {...}
    

Этот последний бит избыточен, поскольку, если $result2 имеет значение false, он уже умер.

1 голос
/ 14 ноября 2011

Если ваша форма отправлена ​​post, вы должны получить идентификатор с:

$id = $_POST['id'];
0 голосов
/ 22 января 2019

Если вы хотите получить значение из URL, вам нужно использовать метод PHP $ _ GET [] для получения информации или значения. важно Не: Если у вас нет изображений в базе данных, вставьте несколько изображений в базу данных, используя этот учебник.

Вы можете увидеть нижеприведенный код и ссылку, чтобы узнать больше о

Метод PHP $ _GET $ _GET - это суперглобальный метод PHP.Используется для анализа URL браузера и сканирования и получения заданного параметра или информации по идентификатору.

Перейдите по ссылке ниже, чтобы получить дополнительную информацию об этих руководствах.

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

код идентификации страницы для первой страницы

<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

...