我是一名Android开发人员,我主要使用Java,但由于我在PHP中开发自己的原始API,我在这里苦苦挣扎。
当用户在他们的集合中添加一个新项目时,我在MySQL数据库中有这三个布尔值:
item_is_gift
item_condition_new
item_bought_from_place
在我的Java代码中,我发送了这些字符串值 - true
或false
将它们插入MySQL时,我必须相应地将它们转换为1
或0
,但我似乎无法这样做
这是我的代码:
$item_is_gift = $_POST['item_is_gift'];
$item_condition_new = $_POST['item_condition_new'];
$item_bought_from_place = $_POST['item_bought_from_place'];
if($item_is_gift = true){
$item_is_gift = 1;
} else {
$item_is_gift = 0;
$item_price = 0;
}
if($item_condition_new = true) {
$item_condition_new = 1;
} else {
$item_condition_new = 0;
}
if($item_bought_from_place = true) {
$item_bought_from_place = 1;
$item_bought_from_user = 0;
}
当我查看数据库记录时,所有这些记录总是说1
。
答案 0 :(得分:4)
在“if”中设置变量:
if($item_is_gift = true){
但你想要的是比较它们。您可以使用以下方式执行此操作:
if($item_is_gift == true){
或与:
if($item_is_gift === true){
The PHP manual有更多关于差异的信息。
此外,您想要与字符串进行比较。所以你必须这样写:
if($item_is_gift == 'true'){
答案 1 :(得分:2)
您收到的字符串值为 false 或 true 。要检查使用比较运算符:==
,而不是=
(这是赋值运算符)。并比较 strings ...您将布尔值与字符串进行比较:
if ($item_condition_new == 'true')
是你真正追求的。您还应该检查$_POST
数组中的键是否确实存在:
if (isset($_POST['item_condition_new']))
$item_condition_new = $_POST['item_condition_new'];
避免通知。同时处理输入更加人性化:删除尾随/前导空格并接受大写和小写字符:
$item_condition_new = trim($item_condition_new);//remove excess white-space
$item_condition_new = strtolower($item_condition_new);//make all lower-case
然后,你可以这样做:
if ($item_condition_new == 'true')
{
$item_condition_new = 1;
}
else
{
$item_condition_new = 0;
}
更短的方法是使用三元运算符(但要小心!):
$item_condition_new = $item_condition_new == 'true' ? 1 : 0;
答案 2 :(得分:1)
啊哈!
您使用的是“=”而不是“==”。
给它一个去..
if($item_condition_new == true) {
$item_condition_new = 1;
} else {
$item_condition_new = 0;
}
答案 3 :(得分:0)
试试这个:
$item_is_gift = isset($_POST['item_is_gift']) && $_POST['item_is_gift'] == 'true'? 1 : 0;
// and so on...
答案 4 :(得分:0)
你在if的条件下失败了。您正在分配而不是比较......
if($item_is_gift == true){
...
if($item_condition_new == true) {
...
if($item_bought_from_place == true) {