【问题标题】:Set a variable in url using php and mysql使用 php 和 mysql 在 url 中设置变量
【发布时间】:2014-02-20 21:04:15
【问题描述】:

我需要在 url 中设置两个变量,$id 和 $job。数据应来自 mysql select 语句,[id] 和 [job_number_id]。我的页面显示一个客户工作提案,如果有多个提案,则会显示所有提案,但 [id] 和 [job_number_id] 决定了网页上显示的内容。我不知道这是如何完成的。任何帮助将不胜感激。代码如下:

<?php

$url = 'http://localhost/estimate_lar/homepage.php';
$id = $_SESSION['id'];

$query =    "SELECT id, client_job_name, job_number_id
            FROM `job_name`
            WHERE `id`='$id'";
$allJobs = $db->query($query);

?>

<?php foreach ($allJobs as $site_title) : ?>
 <p> 
  <tr><?php echo '<a href="'.$url.'">'.$site_title['client_job_name'],$site_title['job_number_id']. '<br />'.'</a>'; ?>
    <td></td>
  </tr>
</p>
<?php endforeach; ?>

【问题讨论】:

  • 这是完整的代码吗?您缺少 session_start() ,数据库连接..
  • 显示什么错误?
  • @Shankar Damodaran session_start() 位于另一个文件中。还有一些文件我没有包括在内。此时我没有收到任何错误,因为我没有向 http 地址添加变量。我需要获取 id 和工作编号 id 并将其添加到 url。

标签: php mysql variables url


【解决方案1】:

如果您希望变量在 URL 中可用,您需要使用 $_GET 读取它们。

从诸如 index.php?id=1&amp;job_number_id=3 之类的 url 获取参数将如下所示:

if (isset($_GET['id']) && isset($_GET['job_number_id'])) {//make sure both arguments are set
    $id = $_GET['id'];
    $job_number_id = $_GET['job_number_id'];
}

在你的 foreach 语句中设置它:

<?php foreach ($allJobs as $site_title) : ?>
 <p> 
      <tr><?php 

$url = "http://localhost/estimate_lar/homepage.php?id=" . $site_title['id'] . "&job_number_id=" . $site_title['job_number_id'];

echo '<a href="'.$url.'">'.$site_title['client_job_name'],$site_title['job_number_id']. '<br />'.'</a>'; 

    ?>
    <td></td>
  </tr>
</p>
<?php endforeach; ?>

请记住阅读有关 SQL 注入的信息并确保您正在转义您的输入。甚至更好 - 使用准备好的语句。

目前您的脚本是 volunerable,因为每个人都可以更改 URL 并操作您的数据库。

希望这会有所帮助!

【讨论】:

  • 添加此代码后,我现在收到 警告: 为 foreach() 提供的参数无效。在我没有错误之前,发生了什么?
  • 可能有多种原因。执行 var_dump($_GET) 并发布它,以便我查看。另外,您使用的是 mysql、mysqli 还是 pdo?也对 $alljobs 执行 var_dump。
  • var_dump on $alljobs array(0) { } object(PDOStatement)#5 (1) { ["queryString"]=> string(76) "SELECT id, client_job_name, job_number_id FROM job_name WHERE id ='8'" }
  • var_dump on ($_GET) 注意:未定义索引:C:\xampp\htdocs\Estimate_lar\home.php 中第 33 行的 job_number_id
  • $_GET 错误是因为您没有在 url 中设置 job_number_id
【解决方案2】:

试试这个。

<?php
session_start();
$id = $_SESSION['id'];
$url = 'http://localhost/estimate_lar/homepage.php';
if($id){

$query =    "SELECT id, client_job_name, job_number_id  FROM `job_name`  WHERE `id`='$id'";
$allJobs = $db->query($query);

}else{
echo "Id not in session";
}
?>
 <table>
<?php if ($allJobs)  { foreach ($allJobs as $site_title) : ?>

  <tr>
  <td>
 <a href="<?php echo $url; ?>?client_job_name=<?php echo $site_title['client_job_name'];?>&job_number_id=<?php echo $site_title['job_number_id'];?> "> <?php echo $site_title['job_number_id']. " ".$site_title['job_number_id']; ?></a>
  </td>

 </tr>

<?php endforeach; ?>
</table>

 <?php }else{ echo 'No results Found' ;} ?>

这可能会对你有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-03
    • 2019-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多