簡體   English   中英

使用JS / JQuery修改PHP以與MySQL通訊

[英]Modifying PHP using JS/JQuery to communicate with MySQL

因此,我的目標是嘗試允許頁面上的動態元素確定發送到數據庫的SQL。

第一部分是我的主要HTML文檔中包含的JS:

var sub_condition = " AND artist=\'ivoilic\' ";//$(".current_filter").attr("condition");
        $("<?php $conditions = 'WHERE owner=\'ivoilic\'"+ sub_condition+"'; include 'PHP/get_info.php';?>").appendTo(".collection tbody");

上面包含的文檔get_info.php看起來像這樣:

<?php
include "connect.inc.php";
parse_str($conditions,$test);
$info = mysql_query("SELECT * FROM cards ".$condition.";")or die(mysql_error());?>

我的問題是,當我僅回顯SQL時,它看起來很好,而當我手動測試SQL時,它就可以工作。 但是無論出於什么原因,當我嘗試使用此方法插入SQL的末尾時,都無濟於事。 有人有想法么?

我嘗試向您顯示正確的方向:

第一

想想您想在mysql中做什么。 Google for mysql注入。 如果您將mysql查詢從客戶端(瀏覽器)發送到服務器,則每個人都可以將其更改為drop database並相信我-您不希望有人刪除您的數據庫;)

第二

查看此PHP數據庫訪問。 這是通過PDO完成的。 PDO是一個PHP類,可以防止mysql注入,並且以后也會在許多其他情況下為您提供幫助。

<?php
$id = $_GET['id'];
$ownerName = $_GET['ownerName'];

$db = new PDO('mysql:host=localhost;dbname=<SOMEDB>', '<USERNAME>', 'PASSWORD');
$query = $db->prepare('SELECT * FROM `cards` WHERE `id` = :ID AND `owner` = :OWNER');
$query->execute(array(
  ':ID' => $id,
  ':OWNER' => $owner
));
$result = $query->fetchAll(); //$result is now an array of search result objects

您會看到,您只是通過javascript將值發送到了php腳本。 當然,您可能在php腳本中有幾個查詢字符串,並且可能通過特殊查詢ID和開關的組合得到一個查詢字符串? 由你決定。

例:

<?php
  $queryNum = (int)$_GET['queryNum'];
  $value1 = $_GET['val1'];
  $value2 = $_GET['val2'];

  switch($queryNum){
    case 1:
        $query = 'SELECT * FROM `cards` WHERE `id` = :ID AND `owner` = :OWNER';
        $queryVals = array(':ID' => $value1, ':OWNER' => $value2);
      break;
    case 2:
        $query = 'SELECT * FROM `cards` WHERE `color` = :COLOR AND `size` = :SIZE';
        $queryVals = array(':COLOR' => $value1, ':SIZE' => $value2);
      break;
    default:
         $query = 'SELECT * FROM `cards`';
         $queryVals = array();
      break;
  };

  $db = new PDO('mysql:host=localhost;dbname=<SOMEDB>', '<USERNAME>', 'PASSWORD');
  $query = $db->prepare($query);
  $query->execute($queryVals);
  $result = $query->fetchAll(); //$result is now an array of search result objects

第三

僅將數據庫查詢的值從javascript或HTML形式發送到php腳本。

摘要

那真的是基礎知識,我的腳本示例只是可以向您顯示正確方向的簡單示例。 永遠不要忘記防止用戶以任何方式更改數據庫查詢或php代碼的可能性!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM