对不起,我的英语不是我的母语。我已经创建了一个用户界面来向MySQL插入数据。除了一件事之外,一切都是可以的,但是当我想从多个复选框中读取数据并将它们写到MySQL中设置类型时,它就是不起作用。我试图找到答案,但4个小时后,我找不到它,或者我不明白它。
http://jyxo.info/uploads/21/21b104df77f6ca723bb708d8d0549af5430e8e91.jpg
dobaVyskytu是固定类型的,有一个月你可以找到蘑菇(我的天呐是在线蘑菇地图集)
在用户界面有12个月的12个复选框。
http://jyxo.info/uploads/FD/fd548760b155307dfa677ada7c4be4996abf7b93.png
在dobavyskytu中,我需要多个选择,这就是我使用$doba +=的原因。
if(isset($_POST["Leden"]))
{
$doba += "Leden";
}
if(isset($_POST["Únor"]))
{
$doba += "Únor";
}
if(isset($_POST["Březen"]))
{
$doba += "Březen";
}
Db::query("INSERT INTO houby(nazev,dobaVyskytu,mistoVyskytu,popis,jedovatost,img)VALUES(?,?,?,?,?,?)",$nazev,$doba,$misto,$popis,$jedovatost,$foto);
感谢大家的阅读和帮助,因为它现在起作用了。
发布于 2017-05-27 22:21:25
对于PHP中的字符串,它使用.
作为连接,而不是+
,因此
$doba .= "Leden";
编辑:要想更好地做到这一点,你应该尝试一下.
$options = [];
if(isset($_POST["Leden"]))
{
$options[] = "Leden";
}
if(isset($_POST["Únor"]))
{
$options[] = "Únor";
}
...
$doba = implode(',', $options);
因为这会给你一些类似于Leden,Únor
的东西
发布于 2017-05-27 23:11:32
我的假设是:
(你的问题更新似乎证实了我的假设!)
首先,当您想在MySQL中的SET类型列中插入多个值时,字符串值必须用逗号分隔。
使用我看到的代码,您可以得到字符串“Ledenřezen”(我认为您使用+=进行字符串连接,但是您应该像Nigel Ren提到的那样使用.= )。如果您显示的所有3个值都在您的表单中被选中,那么您确实希望得到一个字符串,如"Leden,nor,Březen“。
有关如何在MySQL:https://dev.mysql.com/doc/refman/5.7/en/set.html中处理SET类型,请参见此处
由于您不知道该列的值是0还是多个值,所以我建议将$doba设置为数组。
$doba = array(); // depending on your PHP version, you can also write $doba = [];
之后,您可以以这种方式添加值(语法$array[] = ' value‘将为数组附加一个值):
$doba[] = "Leden";
$doba[] = "Únor";
$doba[] = "Březen";
然后,在插入数组之前,可以将数组转换为字符串,并以逗号分隔值:
$csvDoba = implode(',', $doba);
然后在Db::$doba ()行中使用$doba而不是$doba。
在完成这项工作之后,您可以找到更多可以改进代码的内容:
https://stackoverflow.com/questions/44224328
复制