【问题标题】:Can't insert all data in MySQL using PHP无法使用 PHP 在 MySQL 中插入所有数据
【发布时间】:2015-11-13 17:14:33
【问题描述】:

标题并没有确切地透露整个事情。 现在我正在开发一个实验室软件。在这里,所有单独的测试名称及其详细信息都在一个表中(例如名称“test_info”)并且为这些测试生成的所有账单都在另一个表中(例如名称“bill_info”)以及何时插入测试报告我'将其存储在另一个表中(例如名称'rpt_info')。

有一些小组测试是测试的集合。我创建了一个名为 'group' 的列,如果值为 null,则它们不属于任何组测试,并且当它们是一个值(即测试名称)时,意味着该测试属于该组测试。

现在,看看是什么迫使我在这里提出问题。 当输入测试报告的值时,我只是称它们为-

           <?php
          $gtsql = "SELECT * FROM `bill_info` where `test_id` = '" . $pid."' and `group`='y'";
        $reslt = mysql_query($gtsql);
        while ($data = mysql_fetch_assoc($reslt))
        {
            $test_inf=  "SELECT * FROM `test_info` where `group` = '". $data["pr_name"]."'";
            $test_qr=  mysql_query($test_inf);
             $k = 1;
             while ($test = mysql_fetch_assoc($test_qr)) {

            echo '<tr><td width="80"></td><td align="left"> <input name="name" id="name" style="border:none; background: transparent;" value="' .  $test["name"] . '" readonly/></td><td width="144" align="left"> <INPUT name="result" id="result" /></td><td width="125" align="left"><input name="unit" id="unit" style="border:none; background: transparent;" value="' . $test["unit"] . '" readonly/></td><td align="left">'; 
$ref= $test["ref_range"];
$ref2= $test["ref_range2"];
$ref3= $test["ref_range3"];
if($ref=!"")
{ echo '<br/><input name="ref_range" id="ref_range" style="border:none; background: transparent;" value="'.$test["ref_range"].'" readonly/>';} 
if ($ref2=!"")
{ echo '<br/><input name="ref_range2" id="ref_range2" style="border:none; background: transparent;" value="'.$test["ref_range2"].'" readonly/>';} else { echo "";}
if ($ref3=!"")
{ echo '<br/><input name="ref_range3" id="ref_range3" style="border:none; background: transparent;" value="'.$test["ref_range3"].'" readonly/>';} else { echo "";}; 

'
</td></tr>
';
            $k++;
             }
    }


         ?>

这工作正常,并在屏幕上完美地向用户显示所有测试及其信息。但是当我尝试将这些数据插入到“rpt_info”表中时,就会出现问题。 我试过'while','for',但无法将值插入表中。 这是我现在正在运行的插入代码。还有一件事要分享给你的朋友,为了获得完美数量的测试,我在另一个表(名称“sell”)中做了一行,我在其中放置了个人测试(账单)记录。名为“num”的行。我计算“num”值以找出我想要运行代码的次数。当我回应那个$num 时,它就完美了。但每次我只插入一行。

 <?php
  if(isset($_POST['posted']))
  {

$prsql = "SELECT SUM(num) FROM `sell` where `test_id`='".$_POST['test_id']."'";
$prrs = mysql_query($prsql);
$datas = mysql_fetch_assoc($prrs);
$num= $datas['SUM(num)'];
$i=1;
while ($i < $num)
  {
$str_tst = "INSERT INTO `rpt_info` (`pt_id`,`test_id`,`result`,`name`,`unit`,`ref_range`, `ref_range2`, `ref_range3`, `rcv_date`, `dlv_date`, `age`, `test_cat`)VALUES ( '" . $_POST['pt_id'] . "', '" . $_POST['test_id'] . "', '" . $_POST['result'] . "', '" . $_POST['name'] . "', '" . $_POST['unit'] . "', '" . $_POST['ref_range'] . "', '" . $_POST['ref_range2'] . "', '" . $_POST['ref_range3'] . "', '" . $_POST['rcv_date']. "', '" . $_POST['dlv_date'] . "', '" . $_POST['pt_age'] . "', '" .  $_POST['test_cat']. "')";

 $i++;

  }
?>

<?php
   if(mysql_query($str_tst))
     {
        echo '................';
}
?>

有没有人可以帮我解决这个问题?

这是我的第一个问题,可能我无法向你们所有人解释清楚。如果您想更清楚地了解问题,请随时向我提问。

【问题讨论】:

  • 您的代码中没有插入查询?
  • 发布不工作的部分,而不是工作的部分
  • 您没有发布insert 查询或错误消息
  • 抱歉,我正在更新我的问题
  • 除了你不应该再使用mysql_*函数之外(使用mysqli或PDO,你正在创建一个插入查询,但你没有执行它。

标签: php for-loop while-loop


【解决方案1】:

1) 你的$num= $datas['SUM(num)']; 不存在。试试

$prsql = "SELECT SUM(num) as SumNum FROM `sell` where `test_id`='".$_POST['test_id']."'";

您可以使用$num= $datas['SumNum'];获取它

2) $str_tst 是一个简单的字符串,你不要告诉它执行查询。您使用mysql_query($str_tst) or die mysql_error(); 执行它。使用

while ($i < $num)
  {
$str_tst = "INSERT INTO `rpt_info` (`pt_id`,`test_id`,`result`,`name`,`unit`,`ref_range`, `ref_range2`, `ref_range3`, `rcv_date`, `dlv_date`, `age`, `test_cat`)VALUES ( '" . $_POST['pt_id'] . "', '" . $_POST['test_id'] . "', '" . $_POST['result'] . "', '" . $_POST['name'] . "', '" . $_POST['unit'] . "', '" . $_POST['ref_range'] . "', '" . $_POST['ref_range2'] . "', '" . $_POST['ref_range3'] . "', '" . $_POST['rcv_date']. "', '" . $_POST['dlv_date'] . "', '" . $_POST['pt_age'] . "', '" .  $_POST['test_cat']. "')";
mysql_query($str_tst) or die mysql_error(); // Each loop execute the query
 $i++;

  }

3) 您的while 循环不正确。我认为你缺少一个插入。例如,您从 1 开始,然后转到 10,因此您要插入 9 行,因为您使用的是 &lt; 而不是 &lt;=

建议:停止使用 mysql_。请改成mysqli_或PDO

【讨论】:

  • 1) 但是当我执行 echo $num 时,它显示了正确的值:/ 好的,我现在正在尝试你的方式
  • 最重要的是你没有执行你的插入查询,所以这不应该工作......小心,你错过了一个插入。 $i 应该从 0 开始或将 &lt;= 放在你的循环中
  • 在查询结束时使用 ` or die mysql_error()` 来查看你有什么错误
  • 3) 我也有这个想法。但可悲的是每次它只插入 1 行,无论是 5 还是 6...
  • 看看你的循环。你得到一个字符串,然后是 $i++,然后用新查询编辑 THE SAME VAR,然后它再次编辑它 ang 5-6 次。我说你应该将插入插入循环中,而不是外部
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多