我正在尝试运行一个简单的SELECT查询。这是查询

$sql1=$conn->prepare("SELECT q.quoteid, q.customername, q.customersurname, q.timestamp, o.name
FROM quotes as q, occasions as o
WHERE q.occasionid=o.occasionid
AND companyid=1
AND q.day=:day
AND q.month=:month
AND q.year=:year
AND staffid='-1'
AND (q.complete != 'W' OR q.complete != 'Y')
AND q.online=0");
$sql1->execute($exearray);
/* here  $exearray contain following value */
Array ( [:day] => 24 [:month] => 1 [:year] => 2014 )


它甚至没有显示任何错误。
如果我在一个月内传递了静态值1,则会显示数据。
我直接在数据库上运行此查询。

因此,我认为查询中没有错误。
我在MAMP上本地运行此查询。

最佳答案

在传递给pdo之前,您是否尝试过将月份的数据解析为字符串???

$exearray = array(':day'=>24, ':month'=>(string)1, ':year'=>2014);


一旦我遇到这种情况,我做到了,它对我有用。
我在mysql中尝试使用LIMIT命令时总是遇到此问题。我只是将我的值解析为字符串或将其静态传递。
它与您的MAMP无关。我在LAMP和WAMP上也有这个问题。
显然,这是PDO库中的常见问题。

而且,当您将月份的变量直接传递给查询时,请不要忘记使用intval()

关于php - PDO查询不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26530686/

10-11 14:12
查看更多