1

私はこのコードでレコードを正常に挿入していました:

 foreach($R as $k=>$v)
 {
     $test_id = str_replace('rep_result_', '', $k);
     if(strstr($k, 'rep_result_'))
     {      
         $content = $v; 
         $SQL = "INSERT INTO report SET
             rep_te_id   = '$test_id',
             rep_result  = '$content',
             record_id = '$R[payment_id]',
             rep_date    = '$dt'";

しかし今、テーブルに 2 つの追加フィールドがremarkあり、nor. さて、すべてのデータを挿入するために、次のコードを作成しました。

foreach($R as $k=>$v)
{
    $test_id = str_replace('rep_result_', '', $k);
    if(strstr($k, 'rep_result_'))
    {
        $content = $v; 
        if(strstr($k, 'remark_'))
   {
         $remark=$v;
         if(strstr($k, 'nor_'))
         {
             $nor=$v;
         $SQL = "INSERT INTO report SET
                 rep_te_id   = '$test_id',
             rep_result  = '$content',
             record_id = '$R[payment_id]',
             remark  = '**$remark**',
             nor  = '**$nor**',                    
             rep_date    = '$dt'";

データベースには何もありませんでした。ここですべてがうまくいっているわけではありません。条件を1 つだけ使用するifと、データは のように挿入され(rep_result,remark,nor any one)ます。

if(strstr($k, 'remark_'))
   $remark=$v;

しかし、3 つの条件をすべて使用すると、何も保存されません。ifステートメントまたはforeachループの問題があることはわかっています。

4

4 に答える 4

1

クエリINSERTステートメントに誤りがあります。あなたのコードをテストすることはできませんが、あなたの条件がここで動作すると仮定します。これは mysqli 接続とINSERTクエリのサンプルです。

    //opening connection
    $mysqli = new mysqli($dbserver, $dblogin, $dbpassword, $dbname);
    if (mysqli_connect_errno()) 
    {
        printf("Connection failed: %s\n", mysqli_connect_error());
        exit();
    }

    foreach($R as $k=>$v)
    {
        $test_id = str_replace('rep_result_', '', $k);
        if(strstr($k, 'rep_result_'))
        {
            $content = $v; 
            if(strstr($k, 'remark_'))
            {
                  $remark=$v;
                  if(strstr($k, 'nor_'))
                  {
                      $nor=$v;

                      $SQL = "INSERT INTO report (`rep_te_id`, `rep_result`, `record_id`, `remark`, `nor`, `rep_date`) VALUES ('".$test_id."', '".$content."', '".$R['payment_id']."', '".$remark."', '".$nor."', '".$dt."')";
                      echo $SQL   //let's see the query
                      $mysqli->query($SQL) or die($msqli->error.__LINE__);
                  }
            }
        }
    }

ご覧のとおり、条件が一致するかどうかを確認するためechoにステートメントの直後に配置しました。$SQLクエリが印刷されない場合は、これらすべてのif条件に問題があります

于 2013-04-13T11:27:12.270 に答える
0

If 条件のいずれかが満たされていないように見えるため、if 条件ごとに else を実装し、そこから何かをエコーし​​てみてください。

$k の現在の値を知ることができるため、他の 3 つすべてからのみ $k をエコーすることをお勧めします。

else no も指定します。エコーで、他に呼び出されたものを取得できるようになります。

于 2013-04-13T11:21:54.120 に答える