gpt4 book ai didi

php - 通过相应的值访问 PHP MySQLI 预定义常量?

转载 作者:行者123 更新时间:2023-12-02 15:40:53 24 4
gpt4 key购买 nike

我正在编写一个函数,它接受一个 mysqli_result 并将所有返回的列添加到我的结果对象中的关联数组中。到目前为止,通过 mysqli::multi_query 返回的所有内容都是字符串格式,而关于值应该是什么值类型的描述保存在 mysqli::fetch_fields 返回的对象数组中。我觉得到目前为止这还很困惑,所以让我把它编码出来

if ($mysqli->multi_query($inputQuery)) {
if ($result = $mysqli->store_result()) {
//$fields is an array of custom objects
$fields = $result->fetch_fields();

//$fieldType is an integer that is the value of a mysqli predefined constant
$fieldType = $fields[0]->type;

if ($curRow = $result->fetch_row()) {
//No matter what the value type in the database of this item is, and no
//matter what $fieldType corresponds to, $curVal is going to be a string
$curVal = $curRow[0];
}
}
}

根据我的理解,$fieldType 取的整数是预定义 mysqli 常量的 VALUE,可以在这里找到:http://www.php.net/manual/en/mysqli.constants.php

我知道此处已发布与此类似的问题:PHP mysqli_fetch_field data type但我更感兴趣的是将值映射回它们各自的键。

我想做的是根据 $fieldType 到 mysqli 预定义常量的映射,将 $curVal 的字符串值转换为正确的值类型。我想我可以针对每个预定义常量进行强力检查,或者我可以创建一个关联数组,其中包含 value -> key 而不是 key -> value 然后引用它,但我觉得应该有一种更简单的方法来解决这个问题.

那么我的问题是,在 PHP 中通过值查找预定义常量的最简单方法是什么?我是否以与访问 PHP 中的全局常量相同的方式访问这些 mysqli 预定义常量,或者我是否必须执行类似 $mysqli->PREDEFINED_CONSTANT 的操作?

最好的问候,

最佳答案

常量不是对象的一部分,因此使用 $mysqli::CONSTSANT 或 $mysqli->CONSTANT 不会那样工作。

这是一个例子的开始。您必须查看 MySQLi constants 的其余部分并完成 switch 语句。未包含的将保留为字符串。

$result = $mysqli->query('SELECT * FROM `accounts`');
$fields = $result->fetch_fields();

// Loop through each row.
while ( $row = $result->fetch_row() )
{
// Loop through each field.
foreach ( $row as $key => &$value )
{
// Using the $key, find the type of the current field.
switch ( $fields[$key]->type )
{
// Convert INT to an integer.
case MYSQLI_TYPE_TINY:
case MYSQLI_TYPE_SHORT:
case MYSQLI_TYPE_LONG:
case MYSQLI_TYPE_LONGLONG:
case MYSQLI_TYPE_INT24:
$value = intval($value);

break;
// Convert FLOAT to a float.
case MYSQLI_TYPE_FLOAT:
case MYSQLI_TYPE_DOUBLE:
$value = floatval($value);

break;
// Convert TIMESTAMP to a DateTime object.
case MYSQLI_TYPE_TIMESTAMP:
case MYSQLI_TYPE_DATE:
case MYSQLI_TYPE_DATETIME:
$value = new DateTime($value);

break;
}
}

var_dump($row);
}

关于php - 通过相应的值访问 PHP MySQLI 预定义常量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6537212/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com