2013-02-14 119 views
0
function db_execute($sql,$db,$array) 
{ 
    require(getcwd() . '/config/config.php'); 

    if (empty($array)) 
    { 
     $array = ""; 
     print "Something wrong"; 
    } 
    $connection = db_connect($db_host,$db_username,$db_password,$db); 
    $q = $connection->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY)); 


    $q ->execute(array($array)); 

    if(!$q) 
    { 
     die("Error! " . $connection->errorInfo()); 
    } 

    $result = $q -> fetchAll(); 

    return $result; 
} 

$sql = "SELECT VALUE FROM users WHERE :id = :idnum"; 
$array = array(':id' => 'USER_ID', ':idnum' => '2'); 


printFormattedArray($array); 
printFormattedArray(db_execute($sql,"user_db",$array)); 

由于某种原因,我无法从此函数获得任何结果以返回任何结果。但是,当我用PDO准备好的语句不返回结果

$sql = "SELECT VALUE FROM users WHERE USER_ID = 2"; 

替代查询它给了我所需的结果。我究竟做错了什么?

+0

'printFormattedArray'后? – didierc 2013-02-14 05:29:52

+0

它以可读格式打印数组的功能 – 2013-02-14 05:41:04

回答

1

基本上,你有2个选择。

.1。避免在查询中使用动态标识符。
所以,去你的第二个查询。

$sql = "SELECT VALUE FROM users WHERE USER_ID = :idnum"; 
$array = array(':idnum' => '2'); 
$data = db_execute($sql, $array); 

.2。如果你需要动力的标识符,你需要为他们的独特占位以及
所以,你的代码会像

$sql = "SELECT VALUE FROM users WHERE ?n = ?i"; 
$data = db_execute($sql, 'USER_ID', 2); 

此外,

  • 从未查询执行功能连接。连接一次,然后用打开的连接
  • 总是设置你的PDO报告MySQL的错误

添加此代码连接

$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
+0

谢谢!这实际上解决了它! – 2013-02-14 05:40:36