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

query result array, each row's column field to string

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

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

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

$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); 
}

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

最后一点注意事项:PHP 将 return (MySQL)NULL 值作为空字符串 "".

希望对您有所帮助!

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

1) 你会经历一段糟糕的时光,所以你应该找到一种在测试时不危及数据的方法

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