0

再次专家,

我很感激能得到 Jason Sperske 的帮助,使用下面的正则表达式:

$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 字段输入的值。

例如,如果用户输入,正则表达式将在GG12343GG90494之前插入 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 回答