将PHP false插入mysql

Mic*_*rey 5 php mysql data-conversion

我的MySQL表包含一个tinyint(1)值,用于存储true或false值.

我有以下PHP变量:

$name = '';
$description = '';
$active = true;
Run Code Online (Sandbox Code Playgroud)

现在我的SQL查询如下:

$query = "INSERT into my_table (my_name, my_description, active) VALUES ('$name', '$description', $active) ";
Run Code Online (Sandbox Code Playgroud)

这只有在$ active的值为true时才有效.一旦活动变量为false,php将插入一个空字符串,而不是0,因此查询将失败.

在这样的查询中使用false的最佳方法是什么?

我应该手动将false转换为'0'字符串吗?是否更好地立即在PHP方面使用stings?换言之,声明:$ active ='1'; 或者我可以以某种方式让PHP总是将false转换为'0'字符串?

谢谢迈克尔

ssb*_*sbb 6

将您的变量转换为int:

intval($active)
Run Code Online (Sandbox Code Playgroud)


mal*_*lko 5

首先,应使用mysql_real_escape_string或mysqli_real_escape_string或其他适合您的数据库连接的方法对值进行转义,以避免sql注入,然后针对与false有关的特定问题,您可以执行以下操作:

$query = "INSERT into my_table (my_name, my_description, active) VALUES ('$name', '$description', ".($active?1:0) .")";
Run Code Online (Sandbox Code Playgroud)

或将$ active强制转换为int应该也可以完成以下工作:

$query = "INSERT into my_table (my_name, my_description, active) VALUES ('$name', '$description', ".((int) $active)).")";
Run Code Online (Sandbox Code Playgroud)