数组而不是PHP中的单个项
这给了我一个包含两个项的数组,虽然查询输出应该是一个单元格,这可能是显而易见的,但对像我这样的初学者来说不是数组而不是PHP中的单个项,php,mysql,pdo,fetch,Php,Mysql,Pdo,Fetch,这给了我一个包含两个项的数组,虽然查询输出应该是一个单元格,这可能是显而易见的,但对像我这样的初学者来说不是 $db = new PDO("mysql:host={$host};dbname={$dbname};charset=utf8", $username, $password, $options); $options = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'); function dbFetch($db,$
$db = new PDO("mysql:host={$host};dbname={$dbname};charset=utf8", $username, $password, $options);
$options = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8');
function dbFetch($db,$query)
{
$stmt = $db->prepare($query);
$stmt->execute();
return $stmt->fetch();
}
$query = "
SELECT
Name
FROM Players WHERE PlayerID='21'";
$rows = dbFetch($db,$query);
var_dump($rows);
输出:
array(2) { ["Name"]=> string(6) "PLAYERNAME" [0]=> string(6) "PLAYERNAME" }
它首先以关联形式重复输出,然后以数字形式重复输出。尝试使用。它将返回第一条记录的第一列
function dbFetch($db,$query)
{
$stmt = $db->prepare($query);
$stmt->execute();
return $stmt->fetchColumn(0);
}
此外,我敢打赌,您搜索的不是“21”,而是一个变量。在这种情况下,您最好使用并修改代码,如下所示:
$db = new PDO("mysql:host={$host};dbname={$dbname};charset=utf8", $username, $password, $options);
$options = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8');
function dbFetch($db,$query,$params=[])
{
$stmt = $db->prepare($query);
$stmt->execute($params);
return $stmt->fetch();
}
$query = "
SELECT
Name
FROM Players WHERE PlayerID=?";
$params = array("your user id");
$rows = dbFetch($db,$query,$params);
var_dump($rows);
可能是由于获取样式 根据php手册: 公共语句::fetch([int$fetch_style[,int $cursor\u orientation=PDO::FETCH\u ORI\u NEXT[,int$cursor\u offset=0 ]]])从与PDO语句关联的结果集中获取行 对象fetch_样式参数确定PDO返回行的方式 fetch_样式控制如何将下一行返回给调用方。 此值必须是PDO::FETCH_*常量之一,默认为 PDO::ATTR_DEFAULT_FETCH_MODE的值(默认为 PDO::FETCH_两者) FETCH_ASSOC:返回按列名索引的数组 在你的结果集中 FETCH_eath(默认):返回由这两列索引的数组 结果集中返回的名称和0索引列编号 FETCH_-BOUND:返回TRUE并指定列的值 在您的结果集中,设置与之绑定的PHP变量 PDOStatement::bindColumn()方法 PDO::FETCH_类:返回请求类的新实例, 将结果集的列映射到 类,然后调用构造函数,除非 PDO::还提供了FETCH_PROPS_LATE。如果你的风格包括 PDO::FETCH_类类型(例如PDO::FETCH_类| PDO::FETCH_类类型) 然后根据第一个值确定类的名称 专栏 PDO::FETCH_INTO:更新请求类的现有实例, 将结果集的列映射到类中的命名属性 PDO::FETCH_LAZY:将PDO::FETCH_和PDO::FETCH_OBJ结合起来,创建 对象变量在被访问时的名称 FETCH_NAMED:返回一个与 PDO::FETCH_ASSOC,除非有多个列具有 如果名称相同,则该键引用的值将是所有 具有该列名的行中的值 FETCH_NUM:返回一个按列号索引的数组 在结果集中,从第0列开始 FETCH_OBJ:返回一个匿名对象,其属性名为 与结果集中返回的列名相对应 PDO::FETCH_PROPS_LATE:与PDO::FETCH_类一起使用时 在分配属性之前调用类的构造函数 从相应的列值
您将获得关联索引和数字索引。只需将其与
$stmt->fetch(PDO::fetch_ASSOC)一起使用即可
你能理解为什么它会创建两个项目吗?@denski将同时获取数字和关联数据<代码>PDO::FETCH_eath嘿,我使用的是预先准备好的语句,只是想让它尽可能简单。非常感谢。那么在函数$params=[]
中,如果$params
没有值,则默认值为[]
?酷!