Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用PDO获取单个标量的SQL_Php_Mysql_Sql_Database_Pdo - Fatal编程技术网

Php 使用PDO获取单个标量的SQL

Php 使用PDO获取单个标量的SQL,php,mysql,sql,database,pdo,Php,Mysql,Sql,Database,Pdo,这个问题更重要。所以我想检索某列中的数字。让我们假设这个表看起来像这样: A | B | C | D | E | F --------------------- 0 | 50| 0 | 0 | 0 | 0 $stmt = $link->prepare("SELECT MAX($type) as max FROM table"); type | value ------------ A | 0 B | 50 C | 0 假设用户在B中输入,我想获取表中的当前数字,即5

这个问题更重要。所以我想检索某列中的数字。让我们假设这个表看起来像这样:

A | B | C | D | E | F
---------------------
0 | 50| 0 | 0 | 0 | 0
$stmt = $link->prepare("SELECT MAX($type) as max FROM table");
type | value
------------
A    | 0
B    | 50
C    | 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
,而不是返回数字。如何更改代码以获取号码?谢谢

SELECT MAX(:type) as max FROM table
假设
:type
设置为“B”,这将按以下方式执行:

SELECT MAX("B") as max FROM table
只有一个值的最大值将是该值,即:

SELECT "B" as max FROM table
您很可能希望从该列中选择最大值,而不是字符串:

SELECT MAX(B) as max FROM table
你可以这样做:

A | B | C | D | E | F
---------------------
0 | 50| 0 | 0 | 0 | 0
$stmt = $link->prepare("SELECT MAX($type) as max FROM table");
type | value
------------
A    | 0
B    | 50
C    | 0
显然,如果
$type
来自一个用户,那么这很容易受到SQL注入的攻击,但是如果您从一个用户那里得到一个表名,那么无论如何您都是做错了

也有可能您的桌子会像这样更有意义:

A | B | C | D | E | F
---------------------
0 | 50| 0 | 0 | 0 | 0
$stmt = $link->prepare("SELECT MAX($type) as max FROM table");
type | value
------------
A    | 0
B    | 50
C    | 0
然后你可以通过以下方式获得:

SELECT MAX(value) FROM tableName WHERE type = :type
假设
:type
设置为“B”,这将按以下方式执行:

SELECT MAX("B") as max FROM table
只有一个值的最大值将是该值,即:

SELECT "B" as max FROM table
您很可能希望从该列中选择最大值,而不是字符串:

SELECT MAX(B) as max FROM table
你可以这样做:

A | B | C | D | E | F
---------------------
0 | 50| 0 | 0 | 0 | 0
$stmt = $link->prepare("SELECT MAX($type) as max FROM table");
type | value
------------
A    | 0
B    | 50
C    | 0
显然,如果
$type
来自一个用户,那么这很容易受到SQL注入的攻击,但是如果您从一个用户那里得到一个表名,那么无论如何您都是做错了

也有可能您的桌子会像这样更有意义:

A | B | C | D | E | F
---------------------
0 | 50| 0 | 0 | 0 | 0
$stmt = $link->prepare("SELECT MAX($type) as max FROM table");
type | value
------------
A    | 0
B    | 50
C    | 0
然后你可以通过以下方式获得:

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

这看起来不像一张桌子。哪个是列,哪个是行?@codingbiz
abc..
是列名,只有一行。该行包含每种类型的编号。这看起来不像表。哪个是列,哪个是行?@codingbiz
abc..
是列名,只有一行。该行包含每种类型的编号。