0

「objectID」という名前の JavaScript 配列があります。いくつかの異なる ID が入力されています。

Example: objectID = ['465723', '654221, '632876', '102435', '320111', ...]
 (includes just 3-6 character numbers, not sure if entered as string or int)

データベースにクエリを実行するには、「objectID」を使用する必要があります。

JS

 jQuery.ajax({        
      type: "POST",
      url: "filter.php",
      data: { objectsArray : objectID },
      success: function(result) {
        console.log("Object Names:" + result);     
      }
 }); 

フィルター.php

...

 $myArray = $_REQUEST['objectsArray'];

 $qstring = "SELECT Name FROM objectlist WHERE ObjectID IN ($myArray)";

 $result = mysql_query($qstring);
 $results = array();

 while ($row = mysql_fetch_assoc($result,MYSQL_ASSOC))
 {
    $results[] = $row;
 }

...

オブジェクト名を含む JavaScript 配列を返すフィルター スクリプトが必要です。

Example: objectNames = ['Chair', 'Console', 'Lamp', 'Ball', 'TV', ...]

配列を要求すると、次のエラーが発生します。

 "mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in"

クエリ自体に問題があるようです。

4

1 に答える 1

0

$results 配列を json としてエンコードし、出力します。

$myArray = $_REQUEST['objectsArray'];

//you must escape the array elements to prevent SQL injection
$n = count($myArray);
for ($i = 0; $i < $n; ++$i)
{
    $myArray[$i] = mysql_real_escape_string($myArray[$i]);
}
//join them with comma separator
$myArray = implode(',', $myArray);

$qstring = "SELECT Name FROM objectlist WHERE ObjectID IN ($myArray)";

while ($row = mysql_fetch_assoc($result,MYSQL_ASSOC))
{
    $results[] = $row["Name"];
}

$result = json_encode($results);
print $result;

JavaScript では、名前の配列を取得します。ノート:

  1. コードは SQL インジェクションに対して脆弱です。の要素を$myArraySQL リクエストで使用する前に引用します。

  2. mysql_* 関数は非推奨です。

于 2013-07-01T17:22:29.363 に答える