再次专家,
我很感激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字段输入的值。
例如,如果用户输入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的输入参数一起使用?
非常感谢您的协助。
答案 0 :(得分:1)
如果没有访问TDConnect.php,很难确切知道你需要什么,所以这个建议是通用的(我猜MySql具体,但不是那么多)。使用prepared statements!专门针对这个问题:
$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;
}