2012-07-23 102 views
-1

所以,我很确定我的查询应该没问题。但我做了一个var_dump,它返回false,所以我不确定为什么。有人能告诉我什么是我的查询或什么是错的,以及如何解决它?我很确定这不是我的自定义函数db_connect,它的工作原理。可能是什么问题呢?调用一个非对象的成员函数fetch()

这里是我的代码:

require_once("includes/helpers.php"); 
session_start(); 

$dbh = connect_db('mysql:host=localhost;dbname=project1', 'jharvard', 'crimson'); 

if (!isset($_POST['quantity'])) { //go back if incomplete 
    redirect('search'); 
} 

if (!isset($_SESSION['email'])) { 
    redirect('index'); 
} 
elseif (!isset($_SESSION['row'])) { 
    redirect('stocks'); 
} 

$amount = htmlspecialchars($_POST['quantity']); 
$value = htmlspecialchars($_SESSION['row']); 
$email = htmlspecialchars($_SESSION['email']); 
$name = htmlspecialchars($_SESSION['q']); 

if (!filter_var($amount, FILTER_VALIDATE_INT) || $amount < 0) { 
    redirect('search'); 
} 

$dbh->beginTransaction(); 
$result = $dbh->query("SELECT balance FROM users WHERE email = $email"); //get balance 
$result1 = $dbh->query("SELECT id FROM users WHERE email = $email"); //get id 

var_dump($result); 

$bal = $result->fetchAll(PDO::FETCH_NUM); 
$id = $result1->fetch(PDO::FETCH_ASSOC); 


//if ($bal < $amount * $value) { 
// redirect ('search'); 
//} 

$bal = $bal - $amount * $value; //subtracting from total 

$dbh->exec("INSERT INTO stocks (name, shares, id) VALUES ('$name', '$amount', '$id')"); 
$dbh->commit(); 
+0

“我的查询应该罚款”“ var_dump ... return [s] false“不计算。 – 2012-07-23 05:47:05

+0

我得到布尔值false。你是什​​么意思“不计算” – irosenb 2012-07-23 05:49:51

+0

如果你得到错误,那么*你的查询不好*。 – 2012-07-23 05:52:22

回答

1

你需要把$电子邮件变量引号内:

$result = $dbh->query("SELECT balance FROM users WHERE email = '$email'"); //get balance 
$result1 = $dbh->query("SELECT id FROM users WHERE email = '$email'"); 

或连接:

$result = $dbh->query("SELECT balance FROM users WHERE email = '".$email."'"); 
$result1 = $dbh->query("SELECT id FROM users WHERE email = '".$email."'"); 
+0

工作。非常感谢您 – irosenb 2012-07-23 05:58:48

+0

您的第一个解决方案应该可以工作。但是,我不认为你的第二个解决方案会起作用,因为你没有在那里引用引号 – safrazik 2012-07-23 05:58:55

相关问题