【问题标题】:PHP PDO Connection to Azure SQL - Invalid Object Name [table]与 Azure SQL 的 PHP PDO 连接 - 无效的对象名称 [表]
【发布时间】:2015-07-31 17:10:11
【问题描述】:

客户已在 Azure 云上设置 SQL 数据库。我正在尝试使用 PDO 进行连接,但是当我尝试访问表的数据时,我会收到一条错误消息。

我的连接代码:

try {
    $db = new PDO('sqlsrv:server=tcp:serverid.database.windows.net,1433;Database=testdb','user','pass');
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (Exception $e) {
    echo "Error " . $e->getMessage();      
}

这工作正常并且不会产生错误。我要插入的代码...

try {
    $sql = "INSERT INTO tablename (introduction) VALUES (:introduction)";
    $q = $db->prepare($sql);
    $q->execute(array(':introduction'=>'hi'));    
} catch (Exception $e) {
    echo "Error " . $e->getMessage();      
}

我从中得到以下错误

Error SQLSTATE[42S02]: [Microsoft][SQL Server Native Client 11.0][SQL Server]Invalid object name 'tablename'. 

Tablename 绝对是一个确实存在的表。我们已经检查了权限,但不相信是这样。我被困住了。 PDO 对我来说是新的,所以我不知道我是否遗漏了什么明显的东西??

【问题讨论】:

    标签: php sql-server azure pdo


    【解决方案1】:

    尝试将表名设为这种格式:

    dbname.tablename
    

    不是最好的解决方案,但它确实对我有用。

    【讨论】:

    • 谢谢!我尝试使用 database.dbo.tablename 但有相同的错误消息。尝试不使用 dbo 效果很好。我还有其他错误,但它们与插入 NULL 有关,所以我认为它现在可以工作了!谢谢你:)
    • 我猜我的情况是 dbo。不客气:)
    • 谢谢!烦人的是我之前确实尝试过 dbname.dbo.table 并且在没有 dbo 的情况下从未尝试过!无法相信它是那么简单......!干杯:)
    • 嗨@Dan 请参阅我之前对答案的编辑。我给了你推荐的完全相同的东西,但它对他不起作用。也许是一些与架构相关的问题?!​​
    • 我通常会输入$db->exec("USE database");,但我认为这不适用于 Auzure SQL?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多