【问题标题】:Loop and variable php循环和变量php
【发布时间】:2014-06-25 07:59:28
【问题描述】:

我从不使用 php,我必须做一些简单的事情;我必须取一个字符串,对其进行子串化,分解它,然后分解我在第一次分解后找到的数组的字符串。最后我必须将字符串保存在数据库中。这是代码;

mysql_connect("xxx.xx.xx.xx:xxxx","xxxx","xxxxxx");

mysql_select_db("app");

$stringa = substr($rawData, 12, -1);    //works
$prima_sep = explode("%%", $stringa);   //works

$i = 0;
while ($i < count($prima_sep)) {
    $a = 0;
    $b = 1;

    $seconda_sep = explode("&&", $prima_sep[$i]);
    mysql_query("INSERT INTO test (DATA, STRING) VALUES ('".$seconda_sep[$a]."', '".$seconda_sep[$b]."')");

    $i++;
}

$rawDate 看起来像这样

"stringa":"22/5/2014&&blablabla%%23/5/2014&&bla1bla1bla1"

如果我使用这个,我不明白为什么:

mysql_query("INSERT INTO test (DATA, STRING) VALUES ('ok', '".count($seconda_sep)."')");

并且 count($prima_sep) is = 2 我在数据库中正确找到了 2 行,但如果我使用

mysql_query("INSERT INTO test (DATA, STRING) VALUES ('".$seconda_sep[$a]."', '".$seconda_sep[$b]."')");

并且 count($prima_sep) is = 2 我在数据库中发现只有 1 行。

插入正确的行数我需要做什么??

谢谢

【问题讨论】:

  • 首先我建议将 mysql_ 函数更改为 mysqli_ 或 PDO,因为 mysql_ 函数已被弃用,并将在 PHP 的未来版本中删除 php.net//manual/en/migration55.deprecated.php
  • $rawData 值和数据库模型添加到您的答案中以澄清
  • 我们需要你的数据库结构!
  • @Sal00m rawData 的长度可变,但如下所示:22/5/2014&&blablabla%%23/5/2014&&bla1bla1bla1 .....我必须将日期放在数据库的 DATE 和db的STRING中的第二个字符串,仅此而已

标签: php mysql loops while-loop


【解决方案1】:

这个怎么样,我不知道你为什么要丢弃前 12 个字符,但是处理 rawData 可以像这样非常简单地完成。

$rawData = '22/5/2014&&blablabla%%23/5/2014&&bla1bla1bla1%%24/5/2014&&bla1bla1bla2';

$rows = explode("%%", $rawData); 

foreach ( $rows as $row ) {
   $fields = explode('&&',$row);

   $sql = "INSERT INTO test (DATA, STRING) VALUES ('{$fields[0]}', '{$fields[1]}')";
   mysql_query($sql);
}

这会产生:

INSERT INTO test (DATA, STRING) VALUES ('22/5/2014', 'blablabla')
INSERT INTO test (DATA, STRING) VALUES ('23/5/2014', 'bla1bla1bla1')
INSERT INTO test (DATA, STRING) VALUES ('24/5/2014', 'bla1bla1bla2')

【讨论】:

  • 我不明白以前出了什么问题(我来自java和objective c,我认为是对的)但现在可以工作了!谢谢!!
【解决方案2】:

你应该有:

$stringa = $rawData;

而不是

$stringa = substr($rawData, 12, -1); 

否则,您将使用以下数据创建 2 个元素数组:

  0 => string 'lablabla' 
  1 => string '23/5/2014&&bla1bla1bla' 

正如您在使用 &amp;&amp; 分隔符分解第一个元素时看到的那样,您不会有 2 个元素,这就是为什么第一个元素的数据不会插入数据库的原因。

【讨论】:

  • 我更正了 rawData,我需要子字符串来删除一些额外的字符。然后我有这个:22/5/2014&&blablabla%%23/5/2014&&bla1bla1bla1..... 我必须分开这个字符串
猜你喜欢
  • 2011-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-20
  • 1970-01-01
  • 1970-01-01
  • 2014-11-09
  • 2015-04-30
相关资源
最近更新 更多