2013-01-19 17 views
0

再次专家,如何将正则表达式与php/sql脚本集成?

我要感谢已经得到了杰森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,正则表达式将插入2个空间中的GG之前由此产生以下输出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?

我们非常感谢您的协助。

回答

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; 
} 
+0

再次感谢您前来营救。我可以看到,我没有让自己很清楚。首先,我正在使用SQL Server数据库。其次,我有我需要的查询。我只是想知道如何整合 您的正则表达式与此: $ tid = $ _GET [“tid”]; 这样,当我传递我们处理的这些ID的变体时,我们可以得到正确的格式。 例如,这是我所需要的? $ tid = $ _GET [“tid”]; 格式($ tid)???。格式是你写的函数? – Kenny

+0

你可以使用'$ tid = format($ _ GET [“tid”]);'从查询字符串参数转到PHP格式化变量。至于SqlServer部分,对不起,我错过了。我希望这会有所帮助,祝你的代码能够正常工作。 –

+0

非常感谢@Jason。 – Kenny