我正在使用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);
}
答案 0 :(得分:2)
如果您不想尝试调试,因为您害怕丢失数据库:
1)您将度过一段美好的时光,因此您应该找到一种在测试时不会危及您的数据的方法
2)你可以尝试强制执行字符串:$s = (string) $row['fruits'];
即使它应该已经是一个字符串
答案 1 :(得分:1)
在PHP数据库中,返回值是字符串(变体),因此$row["fruits"]
将返回一个字符串,即使MySQL数据类型是一个整数,您仍然会得到一个有效的字符串。因为PHP不是强类型的,所以它会为你做很多自动转换,这意味着你可以在代码中使用结果作为整数或浮点数或字符串(并且可以互换)。
最后一点需要注意:PHP将返回(MySQL)NULL值作为空字符串""
。
希望这有帮助!