- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写一个函数,它接受一个 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/
我在 Java 中遇到异常处理问题,这是我的代码。当我尝试运行此行时出现编译器错误:throw new MojException("Bledne dane");。错误是: exception MojE
我刚刚开始学习asp.net。在你们的支持下,我希望我能从这个论坛学到更多东西。 我的问题是, 我在 asp.net 页面中有一个 TabContainer1,因为每个选项卡面板中有多个类似 (60)
我是一名优秀的程序员,十分优秀!