我想INSERT
到一张桌子。这张桌子很简单。
student_id subject_id student_name student_report
S001 M01 Albert A+
S001 M02 Albert A
S002 M04 Shana B+
我有一个由特殊字符分隔的单个字符串的数据源。这样的事情。
S003 @@@ M02 @@@梅鲁@@@Ç@@@ S003 @@@ M03 @@@梅鲁@@@ S004 @@@ M01 @@@ Haschel @@@ d
如何将这种字符串插入表中? 任何答案或线索或参考非常感谢。提前谢谢
表格在插入后显示:
student_id subject_id student_name student_report
S001 M01 Albert A+
S001 M02 Albert A
S002 M04 Shana B+
S003 M02 Meru C
S003 M02 Meru NULL //no data here
S004 M01 Haschel D
答案 0 :(得分:0)
您需要拆分此字符串。像这样使用explode
函数:
$data = explode('@@@',$stingValue,);
$data
将拥有所有值。打开数据库连接,绑定编写查询,绑定参数并执行它。
答案 1 :(得分:0)
你可以使用这样的查询:
SELECT
REVERSE(SUBSTRING_INDEX(REVERSE(
SUBSTRING_INDEX('S003@@@M02@@@Meru@@@C@@@S003@@@M03@@@Meru@@@S004@@@M01@@@Haschel@@@D','@@@',3)),'@@@',1));
要插入
INSERT INTO YOUR_TABLE
SET
student_id = REVERSE(SUBSTRING_INDEX(REVERSE(
SUBSTRING_INDEX('S003@@@M02@@@Meru@@@C@@@S003@@@M03@@@Meru@@@S004@@@M01@@@Haschel@@@D','@@@',1)),'@@@',1)),
subject_id = REVERSE(SUBSTRING_INDEX(REVERSE(
SUBSTRING_INDEX('S003@@@M02@@@Meru@@@C@@@S003@@@M03@@@Meru@@@S004@@@M01@@@Haschel@@@D','@@@',2)),'@@@',1));
<强>样品强>
mysql> SELECT REVERSE(SUBSTRING_INDEX(REVERSE( SUBSTRING_INDEX('S003@@@M02@@@Meru@@@C@@@S003@@@M03@@@Meru@@@S004@@@M01@@@Haschel@@@D','@@@',1)),'@@@',1)) as reselt;
+--------+
| reselt |
+--------+
| S003 |
+--------+
1 row in set (0,00 sec)
mysql> SELECT REVERSE(SUBSTRING_INDEX(REVERSE( SUBSTRING_INDEX('S003@@@M02@@@Meru@@@C@@@S003@@@M03@@@Meru@@@S004@@@M01@@@Haschel@@@D','@@@',2)),'@@@',1)) as reselt;
+--------+
| reselt |
+--------+
| M02 |
+--------+
1 row in set (0,00 sec)
mysql> SELECT REVERSE(SUBSTRING_INDEX(REVERSE( SUBSTRING_INDEX('S003@@@M02@@@Meru@@@C@@@S003@@@M03@@@Meru@@@S004@@@M01@@@Haschel@@@D','@@@',3)),'@@@',1)) as reselt;
+--------+
| reselt |
+--------+
| Meru |
+--------+
1 row in set (0,00 sec)
答案 2 :(得分:0)
使用S003 @@@ M02 @@@ Meru @@@ C $$$ S003 @@@ M03 @@@ Meru $$$ S004 @@@ M01 @@@ Haschel @@@ D
代替S003 @@@ M02 @@@ Meru @@@ C @@@ S003 @@@ M03 @@@ Meru @@@ S004 @@@ M01 @@@ Haschel @@@ D
e.g。
使用S003 @@@ M03 @@@ Meru @@@@@@
取代使用S003 @@@ M03 @@@ Meru @@@
现在它很容易,循环每一行以获取具有每行数据库值的字符串,并在到达文本末尾时停止处理:
解析器的逻辑有点像这样(不是php只是伪代码):
while(character != <end-of-line-character>)
{
if( character != <new-line-character> )
{
string = string . character
}
else
{
value_to_insert_in_database = explode("@@@", string)
perform_insertion_in_database with value_to_insert_in_database
string = ""
}
}
谢谢和问候