2013-02-02 32 views
0

好吧,我很沮丧,我不知道这个问题是什么。我觉得自己就像一个糟糕的程序员。我试图更新我的数据库,并且我知道我尝试更新的表存在。从字面上我知道这个查询是准确的,但我不知道为什么它不起作用。第一个mysql语句执行,但第二个不执行。这是我的代码。PDO准备好的陈述不会执行

$Statement = $Database->prepare("INSERT INTO table1 (tbl2id, col, col2) VALUES (?, ?, ?); UPDATE table2 SET this = ? WHERE id = ?"); 
$Statement->execute(array($table2id, $col, $col2, 1, $table2id)); 

所以我试图设置数据库,所以他们是一种连接。顺便提一下,我列出了所有的列名。我不知道它是否有助于安全,但我不喜欢公开发布这些内容。无论如何,默认情况下'this'列是0,如果它是1,这意味着用户已经回复。所以'this'被设置为tinyint并且默认值为0.

我不是故意问一个愚蠢的问题或任何东西,我讨厌承认它,但我真的不明白它。也许有一些关于我不知道的PDO陈述。我也尝试过两次单独执行,但它仍然不行。而且我知道有人会说我没有更新正确的桌子或其他东西。但我发誓这是正确的,我已经检查了至少10次。

非常感谢。我喜欢自己弄点东西,但我不能再浪费时间了。

+2

,如果你把它分成两个查询会发生什么? –

+0

我这样做了,它仍然不会执行,我读了PDO :: ATTR_EMULATE_PREPARES,我知道它默认设置为1,并且我没有搞砸了,所以我不认为这是问题 – Alex

+0

我意思是,显然可能没有足够的信息从我的帖子中解决问题,并且我知道我发布的代码似乎没有任何错误。我会一直试图解决它,但我只是想确保没有任何错误发生,这很明显。就像我不知道的PDO,我正在强调。 – Alex

回答

0

那么有一件事真的属于你的编程技能。
程序员必须首先在寻找错误信息
而不是坐在一边看代码,程序员不得不问他们的程序发生了什么事。
因此,它必须是您首要关心的问题 - “我怎样才能得到错误信息?”。
看,它本质上不同:不是“我的代码出了什么问题?”但是“如何得到一个错误?”。

您确定设置了ERRMODE_EXCEPTION,您可以看到发生的所有错误?难道你没有一个愚蠢的异常处理程序与空catch()?你有没有启用display_errors(或你有检查日志)?
你可以看到一个故意的错误 - 像“blah foobar废话”这样的查询会引发一个吗?

如果没有 - 处理错误报告问题。
如果是这样 - 那么是时候检查一下你的程序流程逻辑和愚蠢的类错误(比如插入一个数据库,同时检查另一个等)。

是的,准备/执行不支持多个查询,你必须让他们在不同的呼叫