查询结果数组,每行的列字段为字符串

时间:2015-07-30 19:25:01

标签: php mysql codeigniter codeigniter-2

我正在使用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); 
}

2 个答案:

答案 0 :(得分:2)

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

1)您将度过一段美好的时光,因此您应该找到一种在测试时不会危及您的数据的方法

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

答案 1 :(得分:1)

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

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

希望这有帮助!