【问题标题】:Get URL Parameter with PHP for Mysqli database search使用 PHP 获取 URL 参数以进行 Mysqli 数据库搜索
【发布时间】:2013-05-19 17:30:49
【问题描述】:

我正在尝试研究如何使用 PHP 从 URL 获取参数。 所以我的代码从触发 php 的一些 ajax 和响应的警报开始:

$.ajax({                                      
    url: 'blog/assets/php/load-blog.php',
    dataType: 'json',    
    success: function(data){
     alert(data);
    }
  });

然后我有我的 php:

<?php
  //==== CONNECTION VARIABLE
  $con = new mysqli($host,$user,$pass,$database);


  //==== GET URL PARAMETER
  $urlParam =  $_GET["date"];


  //==== FETCH DATA
  $result = $con->query("SELECT * FROM $table WHERE DATE = '$urlParam'");


  //==== CREATE ARRAY
  $blogArray = array();
  while ($row = $result->fetch_row()) {
    $blogArray[] = $row;
  }


  //==== ECHO AS JSON
  echo json_encode($blogArray);
?>

网址看起来像这样:

http://www.mysite.com/blog/?date=2013-05-14

所有这一切的问题是没有正确选择 URL 参数,但我不知道我做错了什么。

【问题讨论】:

  • 您的查询容易受到 SQL 注入的攻击。请改用parameterized queries。你做了echo $_GET["date"]吗?
  • $table 在您的查询中不存在
  • @antoox 出于明显的安全原因,我从代码 sn-p 中删除了主机、用户、密码和表等连接变量。我遇到的问题是将 URL 参数作为变量获取。

标签: php ajax url parameters mysqli


【解决方案1】:

Javascript

var date = '2013-05-14';

$.ajax({         
    type: "GET",                             
    url: 'blog/assets/php/load-blog.php',
    dataType: 'json',
    data: { date: date }
    success: function(data){
     alert(data);
    }
});

PHP

<?php
//==== CONNECTION VARIABLE
$con = new mysqli($host,$user,$pass,$database);


//==== GET URL PARAMETER
$urlParam =  $_GET["date"];

//==== PREPARED STATEMENT
$stmt = $con->prepare("SELECT id,name FROM __TABLE_NAME__ WHERE date = ?");
$stmt->bind_param("s", $urlParam );
$stmt->execute();
$stmt->bind_result($id, $name);

//==== CREATE ARRAY
$blogArray = array();

//==== FETCH DATA   
while ($stmt->fetch()) {
    $blogArray[] = array(
    'id' => $id,
    'name' => $name
    );
}

//==== CLOSE STATEMENT
$stmt->close();

//==== ECHO AS JSON
echo json_encode($blogArray);
?>

【讨论】:

  • 抱歉,我是 Ajax 和 PHP 新手,所以不太了解。但是这种方法不会拉入所有数据库结果然后用 Ajax 搜索吗?我只想让 Mysqli 查询处理正确的行。
  • 为什么发布?没有数据变化,所以是幂等的。
  • @Coop 你需要先用ajax发送日期,然后添加一个回显看看,你是否发送日期
  • @MarcelKorpel 我在 ajax 请求上使用 post,可能不使用 post 最好我从答案中删除
  • 为什么我需要用ajax发送日期?页面加载时,日期在 URL 参数中。我可以不在 PHP 文件中使用 $_GET["date"] 吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-31
  • 1970-01-01
  • 1970-01-01
  • 2022-12-05
  • 2020-10-06
  • 1970-01-01
  • 2016-05-07
相关资源
最近更新 更多