0

再び専門家、

以下の正規表現でJasonSperskeの助けを借りてくれたことに感謝しています。

$pattern = "/(\d{2})([ND]?)(\d*)(GG[\d]*)?/";

function format($matches) {
  return $matches[1][0].(strlen($matches[2][0])>0?$matches[2][0]:" ").$matches[3][0].(strlen($matches[4][0])>0?"  ".$matches[4][0]:"");
}

正規表現は、IDフィールドに入力された値をフォーマットするのに役立ちます。

たとえば、ユーザーがを入力する12343GG90494と、正規表現はGGの前に2つのスペースを挿入し、次の出力を生成します12343 GG90494

これは、正規表現がユーザー入力をフォーマットする方法の一例にすぎません。

私たちのアプリのユーザーは2つの余分なスペースと結果を入れないことが多く、検索しても結果が得られないため、これは重要です。

上記の正規表現は、私たちにとってその問題を解決します。

現在の私の問題は、次のサンプルクエリで正規表現を使用することです。

$tid = $_GET["tid"];

// Connect to SQL Server database
include("../connections/TDConnect.php");

 $tsql = "SELECT * FROM TC(dtops.dbo.tSearch, Name, '\"$tid*\"')";

$ tidという入力パラメータで使用するにはどうすればよいですか?

いつものように、あなたの援助は大歓迎です。

4

1 に答える 1

1

TDConnect.php にアクセスできないと、必要なものを正確に把握するのが難しいため、このアドバイスは一般的なものです (MySql 固有だと思いますが、それほどではありません)。プリペアド ステートメントを使用してください。特にこの問題の場合:

$mysqli = new mysqli("example.com", "user", "password", "database");
if ($mysqli->connect_errno) {
  echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}
/* Prepared statement, stage 1: prepare */
if (!($stmt = $mysqli->prepare("SELECT * FROM Table WHERE Col LIKE (?)"))) {
  echo "Prepare failed: (" . $mysqli->errno . ") " . $mysqli->error;
}
if (!$stmt->bind_param("s", $tid)) {
  echo "Binding parameters failed: (" . $stmt->errno . ") " . $stmt->error;
}

if (!$stmt->execute()) {
    echo "Execute failed: (" . $stmt->errno . ") " . $stmt->error;
}
于 2013-01-20T01:06:55.183 に答える