我想检查SQL Server 2017表$ tablename(由用户以PHP形式输入):try {
$dothis = "
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = N$tablename)
CREATE TABLE $tablename ( id int IDENTITY (1,1), Name text, GeomCol1 geometry, GeomCol2 AS GeomCol1.STAsText() )";
$tbl = $pdo->exec($dothis);
} catch(PDOException $e) {
echo "Error: ".$e->getMessage();
}
但是我总是遇到相同的错误:SQLSTATE[42S22]: [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Invalid column name 'NNewTable'.
也是:try {
$dothis = "
IF OBJECT_ID ( $tablename, 'U' ) IS NULL
BEGIN
CREATE TABLE $tablename ( id int IDENTITY (1,1), Name text, GeomCol1 geometry, GeomCol2 AS GeomCol1.STAsText() )
END";
$tbl = $pdo->exec($dothis);
错误:SQLSTATE[42S22]: [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Invalid column name 'NewTable'.
如果不检查表是否首先存在,创建表就没问题:try {
$dothis = "
CREATE TABLE $tablename ( id int IDENTITY (1,1), Name text, GeomCol1 geometry, GeomCol2 AS GeomCol1.STAsText() )";
$tbl = $pdo->exec($dothis);
} catch(PDOException $e) {
echo "Error: ".$e->getMessage();
}
没有错误,它将创建名称为$ tablename的表
不幸的是,每次我尝试使用$ tablename变量来检查表是否存在时,它都会返回错误。我希望有人可以提供帮助。
我想检查SQL Server 2017表$ tablename(由用户以PHP形式输入):试试{$ dothis =“如果存在(选择* FROM INFORMATION_SCHEMA.TABLES ...