【问题标题】:query result array, each row's column field to string查询结果数组,每行的列字段为字符串
【发布时间】:2015-07-30 19:25:00
【问题描述】:

我正在使用 CodeIgniter,并在我的一个模型(.php 文件)中编写了以下代码,以对匹配查询的每一行的一个列值执行 preg_split 操作。

对于上下文,我不知道如何调试此类后端操作,并且我迷失/害怕炸毁数据库。问题是我不知道我是在对字符串还是数组值执行preg_split 操作。

fruits 列的字段类型是varchar(32),它是一个字符串,但调用$row['fruits'] 真的会返回一个纯字符串吗?

$query = $this->db->query($sql);
foreach ($query->result_array() as $row) {
    //  theoretically $s = 'apple banana'
    $s = $row['fruits'];
    //  theoretically parts[0]=apple, parts[1]=banana
    $parts = preg_split('/\s+/', $s); 
}

【问题讨论】:

  • 那么你的问题是什么?如何进行调试? var_dumpprint_r。还是什么?

标签: php mysql codeigniter codeigniter-2


【解决方案1】:

如果您因为害怕丢失数据库而不想尝试调试:

1) 你会过得很糟糕,所以你应该找到一种方法,在测试时不危及你的数据

2) 您可以尝试强制执行字符串:$s = (string) $row['fruits'];,即使它应该已经是字符串

【讨论】:

    【解决方案2】:

    在 PHP 数据库中,返回值是字符串(变体),所以 $row["fruits"] 会返回一个字符串,即使 MySQL 数据类型是一个整数,你仍然会得到一个有效的字符串。因为 PHP 不是强类型的,所以它会为您执行大量自动转换,这意味着您可以在代码中将结果用作整数、浮点数或字符串(并且可以互换)。

    最后一点要注意:PHP 将返回 (MySQL)NULL 值作为空字符串 ""

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-11
      相关资源
      最近更新 更多