亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

檢查 SQL Server 2017 中是否存在 $tablename,如果不存在則創建

檢查 SQL Server 2017 中是否存在 $tablename,如果不存在則創建

PHP
瀟瀟雨雨 2022-06-17 14:42:40
我想檢查 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 的表我看到有很多不同的方法可以檢查 SQL Server 中是否存在表不幸的是,每次我嘗試使用 $tablename 變量來檢查表是否存在時,它都會返回錯誤。我希望有人能幫幫忙。
查看完整描述

2 回答

?
白豬掌柜的

TA貢獻1893條經驗 獲得超10個贊

用作文字時,用單引號將表名括起來。此外,如果名稱可能不符合常規標識符(例如嵌入空格)的規則,請考慮將表名括在方括號(或雙引號)中。


try {

    $dothis = "

        IF OBJECT_ID ( N'$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);


查看完整回答
反對 回復 2022-06-17
?
犯罪嫌疑人X

TA貢獻2080條經驗 獲得超4個贊

這也有效:


    try {

        $dothis = "

            if not exists (select * from INFORMATION_SCHEMA.TABLES where TABLE_NAME = N'$tablename')

            BEGIN 

               CREATE TABLE $tablename ( id int IDENTITY (1,1), Name text, GeomCol1 geometry, GeomCol2 AS GeomCol1.STAsText() )

            END";

        $tbl = $pdo->exec($dothis);


查看完整回答
反對 回復 2022-06-17
  • 2 回答
  • 0 關注
  • 148 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號