私は現在、作業中のシステムに対して作成したテーブルデータを動的にリストするためにdatatablesプラグインを使用しています。データテーブル検索の実行に失敗しました
現在、私はプラグインを十分に読んでいますが、使用するには多くの問題はありませんでしたが、今日は大きな問題に遭遇しました。特定のタイプの人々を一覧表示するデータテーブルを持つと、すべてがうまく動作し、私が示しているタイプ(この場合は1人の人)の情報が表示されますが、検索を行うときに、文字「M」の場合、データテーブルは、文字Mを含む表の人々の中にあるものをすべて自動的に探します。私は検索しましたが、その制限を維持する方法を見つけることができず、情報を表示する必要があります。検索。
情報を表示すると、検索を実行するために、次の方法の私が持っているコード:
//Ordenacion
if (isset($_GET['iSortCol_0']))
{
$sOrder = "ORDER BY ";
for ($i=0 ; $i<intval($_GET['iSortingCols']) ; $i++)
{
if ($_GET[ 'bSortable_'.intval($_GET['iSortCol_'.$i]) ] == "true")
{
$sOrder .= $aColumnas[ intval($_GET['iSortCol_'.$i]) ]."
".$_GET['sSortDir_'.$i] .", ";
}
}
$sOrder = substr_replace($sOrder, "", -2);
if ($sOrder == "ORDER BY")
{
$sOrder = "";
}
}
//Filtracion
$sWhere = " WHERE s.id_tipo = 1";
if ($_GET['sSearch'] != "")
{
$sWhere = "WHERE (";
for ($i=0 ; $i<count($aColumnas) ; $i++)
{
$sWhere .= $aColumnas[$i]." LIKE '%".$_GET['sSearch']."%' OR ";
}
$sWhere = substr_replace($sWhere, "", -3);
$sWhere .= ')';
}
// Filtrado de columna individual
for ($i=0 ; $i<count($aColumnas) ; $i++)
{
if ($_GET['bSearchable_'.$i] == "true" && $_GET['sSearch_'.$i] != '')
{
if ($sWhere == "")
{
$sWhere = "WHERE ";
}
else
{
$sWhere .= " AND ";
}
$sWhere .= $aColumnas[$i]." LIKE '%".$_GET['sSearch_'.$i]."%'";
}
}
//Obtener datos para mostrar SQL queries
$sQuery = "
SELECT SQL_CALC_FOUND_ROWS ".str_replace(" , ", " ", implode(", ", $aColumnas))."
FROM personas p
INNER JOIN sesion s ON s.personas_cedula=p.cedula
$sWhere
$sOrder
$sLimit
";
$rResult = $mysqli->query($sQuery);
/* Data set length after filtering */
$sQuery = "
SELECT FOUND_ROWS()
";
$rResultFilterTotal = $mysqli->query($sQuery);
$aResultFilterTotal = $rResultFilterTotal->fetch_array();
$iFilteredTotal = $aResultFilterTotal[0];
/* Total data set length */
$sQuery = "
SELECT COUNT(".$sIndexColumn.")
FROM $sTabla
";
$rResultTotal = $mysqli->query($sQuery);
$aResultTotal = $rResultTotal->fetch_array();
$iTotal = $aResultTotal[0];
他のデータは示されてはならないので、私は、検索状況について少し心配に。たぶん何が起こっているのかなんて愚かなことかもしれませんが、本当に解決できません。だから私は助けを求めています。あなたがPersonTypeで宣言した
$sWhere = " WHERE s.id_tipo = 1";
:
SQLインジェクションを防ぐために準備された文について学ぶ – Jens
すべてのコードの**まずSQLインジェクションの脆弱性です** DATATABLE海を含むパラメータを送信rch文字列( 'sSearch')には、検索を許可したいすべての列イオンと共にこのパラメータを使用できます。 –
しかし、それはsSearchに置くことができるので、検索ではsWhereパラメータに従ってそれを行います。 – rodrigo2324