2012-11-16 25 views
0

此问题更多地在this post上。所以我想检索某一列中的数字。所以我们可以说表是这样的:SQL使用PDO获取单个标量

A | B | C | D | E | F 
--------------------- 
0 | 50| 0 | 0 | 0 | 0 

比方说,用户在B进入,我想去取的表,这是50当前数目。这是我的SQL代码:

$link = new PDO('**;dbname=**;charset=UTF-8','**','**'); 
$stmt = $link->prepare("SELECT MAX(:type) as max FROM table"); 
$stmt->bindParam(':type', $type); 
$stmt->execute(); 
$used = $stmt->fetch(PDO::FETCH_ASSOC); 
$used = $used["max"]; 

但是,这只是返回B而不是数字。如何更改我的代码以获取号码?由于

+0

这看起来并不像一个表。哪一列是哪一行? – codingbiz

+0

@codingbiz'A B C ...'是列名,只有一行。该行包含每种类型的编号。 – Richard

回答

4
SELECT MAX(:type) as max FROM table 

假设:type被设置为 “B”,这将作为执行:

SELECT MAX("B") as max FROM table 

的东西只有一个值MAX将是一个值,即:

SELECT "B" as max FROM table 

最有可能你想从该列中选择MAX,不是字符串:

SELECT MAX(B) as max FROM table 

,你可以这样做:

$stmt = $link->prepare("SELECT MAX($type) as max FROM table"); 

显然,这是容易受到SQL注入,如果$type来自用户,但如果你从用户得到一个表名,那么你就无论如何,这是错的。

这也有可能是你的桌子会更有这样的感觉:

type | value 
------------ 
A | 0 
B | 50 
C | 0 

然后你可以用得到它:

SELECT MAX(value) FROM tableName WHERE type = :type 
+0

这工作完全谢谢你! – Richard