gpt4 book ai didi

PHP - 根据用户在新页面上的选择显示 MySQL 数据

转载 作者:行者123 更新时间:2023-11-29 02:18:22 26 4
gpt4 key购买 nike

我试图显示我数据库中的每条工作记录,当用户点击一条记录时,它将继续在新页面上显示该记录的工作描述。

在我目前的状态下,我已经成功地显示了每个职位,点击它们会将用户定向到“showjob.php?id=”。我的问题是它没有显示我的工作信息。

包含工作列表的页面:这可行

$results = $pdo->query('SELECT * FROM jobs');
foreach ($results as $row) {
echo '<a class="job_listing_href" href="showjob.php?id="' . $row['job_id'] . '><div id="job_listing">' . $row['job_title'] . ' '
. $row['cat_job'] . '</div><br/><br/>';
}

包含个人职位信息的页面:

    $pkey = mysql_real_escape_string($_GET['job_id']);
$sql = "SELECT * FROM jobs WHERE job_id='$pkey'";
foreach ($results as $pdo) {
echo '<div id="job_listing">' . $row['job_title'] . ' ' . $row['cat_job'] . '</div><div id="job_listing_content">' . $row['job_desc'] .
'</div>';
}

它与我的 job_desc 无关,因为我可以将它实现到我的上一个页面并且它很好地列出了它。我的猜测是这与我的 $_GET 有关,但不确定。

另外作为旁注,我知道我的网站容易受到 SQL 注入(inject)攻击,我会尽快修复它:)谁能提供解决方案或让我走上正轨?

感谢所有花时间帮助我的人!

更新

我采纳了大家的建议 - 谢谢,但我的“showjob”页面仍然没有显示任何内容。这是我的新代码:

$pkey = mysql_real_escape_string($_GET['id']);
$sql = "SELECT * FROM jobs WHERE job_id='$pkey'";
$results = $pdo->query($sql);
foreach($results as $row) {
echo '<div id="job_listing">' . $row['job_title'] . ' ' . $row['cat_job'] . '</div><div id="job_listing_content">' . $row['job_desc'] .
'</div>';
}

最佳答案

您在使用 PDO 连接时使用 mysql_real_escape_string() 混合使用 MySQL API,因此您不能在连接/查询相同代码时同时使用它们。

  • 旁注:理论上您可以使用旧版本的 PHP,但从 PHP 7.0 开始,mysql_ API 已被删除,因此如果是这样,您肯定无法在此处使用它案例。

引用:http://php.net/manual/en/function.mysql-real-escape-string.php

"This extension was deprecated in PHP 5.5.0, and it was removed in PHP 7.0.0."

您需要在此处使用 PDO 准备语句以转义数据,这正是您要在此处执行的操作。

$pdo = new PDO("...");

if(!empty($_GET['job_id'])){

$pkey = $_GET['job_id'];
$statement = $pdo->prepare("SELECT * FROM jobs WHERE job_id = :jobid");
$statement->execute(array(':jobid' => $pkey));

while($row = $statement->fetch(PDO::FETCH_ASSOC)) {
// echo $row['field1'].' '.$row['field2']; //etc... taken from an example, sorry.
echo '<div id="job_listing">' . $row['job_title'] . ' ' . $row['cat_job'] . '</div><div id="job_listing_content">' . $row['job_desc'] .
'</div>';
}

}

else{
echo "GET is empty, check for errors.";
}

如果您还没有这样做,请同时检查错误。

引用资料:

PDO 引用:


脚注:

我注意到您正在使用 href="showjob.php?id 但您正在使用 $_GET['job_id'] 数组。

  • id != job_id

如果那是您仍在使用的东西并且两者都需要匹配,那将会让您失望。

错误报告会告诉你这件事。

添加error reporting到您的文件的顶部,这将有助于查找错误。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// Then the rest of your code

旁注:显示错误只应在试运行中进行,绝不能在生产中进行。

其他说明:

如果您的服务器不支持 mysql_ MySQL API,那么错误报告会向您抛出类似于以下内容的内容:

Fatal error: Call to undefined function mysql_real_escape_string()...

关于PHP - 根据用户在新页面上的选择显示 MySQL 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35755592/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com