0

データベースにデータを入力するための php スクリプトが選択的に動作しています。5 年生と 10 年生のデータは表示されますが、他のすべての学年のデータは表示されません。if else ブロックをチェックしましたが、データベースにデータを入力しないはずなので、ロジックは内部ブロックを実行して問題なく動作しています。5 番目または 10 番目以外のグレードでは、2 番目のブロックが実行され、データベースに入力するはずの正しい値がエコーされることを既に確認しています。sql() クエリの後にエコーを使用すると、それも機能することがわかったので、何が問題なのかわかりません。

これがコードです。HTMLも必要な場合はお知らせください

<?php
$roll=$_POST['roll'];
$marks=$_POST['marks'];
$dbase=$_POST['std'];
$sec=$_POST['sec'];
$sec1=$_POST['sec1'];
$expire= time()+60;
if (empty($roll) || empty($marks) || ($dbase==0))
{

echo '<p align="center">You did not enter all data. Please go back and enter them.</p>';
echo '<FORM><p align="center"><INPUT TYPE="button" VALUE="Go Back" onClick="history.go(-1);return true;"></p></FORM>';
die();
}
else
{
    if($dbase==5)
    {
        $temp="five";
    }
    if($dbase==6)
    {
        $temp="six";
    }
    if($dbase==7)
    {
        $temp="seven";
    }
    if($dbase==8)
    {
        $temp="eight";
    }
    if($dbase==9)
    {
        $temp="nine";
    }
    if($dbase==10)
    {
        $temp="ten";
    }
    if($dbase==11)
    {
        $temp="eleven";
    }
    if($dbase==12)
    {
        $temp="twelve";
    }
if(($dbase==5)&&($sec=="0"))
{
    echo '<p align="center">You did not enter all data. Please go back and enter them. 2</p>';
    echo '<FORM><p align="center"><INPUT TYPE="button" VALUE="Go Back" onClick="history.go(-1);return true;"></p></FORM>';
    die();
}
else
{
    if($dbase<6)
    {
    $sect=$sec;
    setcookie("tab", $temp, $expire, "/","skc-hs.com");
    $host="127.0.0.1"; // Host name
    $username="root"; // Mysql username
    $password=""; // Mysql password
    $db_name="data"; // Database name
    $tbl_name=$temp; // Table name
    // Connect to server and select databse.
    mysql_connect("$host", "$username", "$password")or die("cannot connect");
    mysql_select_db("$db_name")or die("cannot select DB");

    // To protect MySQL injection (more detail about MySQL injection)
    $roll = stripslashes($roll);
    $marks = stripslashes($marks);
    $roll = mysql_real_escape_string($roll);
    $marks = mysql_real_escape_string($marks);
    $sql="insert into $tbl_name (roll , marks, std, sec) values ('$roll' , '$marks' , '$dbase' , '$sect')";
    mysql_query($sql);
    header( 'Location: dcreate.html');
    die();
    }
}
if(($dbase!=10)&&($dbase!=5)&&($sec1=="0"))
{
    echo '<p align="center">You did not enter all data. Please go back and enter them. 3</p>';
    echo '<FORM><p align="center"><INPUT TYPE="button" VALUE="Go Back" onClick="history.go(-1);return true;"></p></FORM>';
    die();
}
else
{
    if(($dbase!=5)&&($dbase!=10))
    {
    $sect=$sec1;
    setcookie("tab", $temp, $expire, "/","skc-hs.com");
    $host="127.0.0.1"; // Host name
    $username="root"; // Mysql username
    $password=""; // Mysql password
    $db_name="data"; // Database name
    $tbl_name=$temp; // Table name
    // Connect to server and select databse.
    mysql_connect("$host", "$username", "$password")or die("cannot connect");
    mysql_select_db("$db_name")or die("cannot select DB");

    // To protect MySQL injection (more detail about MySQL injection)
    $roll = stripslashes($roll);
    $marks = stripslashes($marks);
    $roll = mysql_real_escape_string($roll);
    $marks = mysql_real_escape_string($marks);
    $sql="insert into $tbl_name (roll , marks, std, sec) values ('$roll' , '$marks' , '$dbase' '$sect')";
    mysql_query($sql);
    header( 'Location: dcreate.html');
    die();
    }
}

if($dbase==10)
{
    setcookie("tab", $temp, $expire, "/","skc-hs.com");
    $host="127.0.0.1"; // Host name
    $username="root"; // Mysql username
    $password=""; // Mysql password
    $db_name="data"; // Database name
    $tbl_name=$temp; // Table name
    // Connect to server and select databse.
    mysql_connect("$host", "$username", "$password")or die("cannot connect");
    mysql_select_db("$db_name")or die("cannot select DB");
    // To protect MySQL injection (more detail about MySQL injection)
    $roll = stripslashes($roll);
    $marks = stripslashes($marks);
    $roll = mysql_real_escape_string($roll);
    $marks = mysql_real_escape_string($marks);
    $sql="insert into $tbl_name (roll , marks, std) values ('$roll' , '$marks' , '$dbase')";
    mysql_query($sql);
    header( 'Location: dcreate.html');
    die();
}


}
?>

テーブルの構造(テーブル「ten」を除く)

列タイプ 照合属性 Null デフォルト ExtraAction id int(11) いいえ なし AUTO_INCREMENT
roll varchar(3) latin1_swedish_ci いいえ なし
マーク smallint(6) いいえ なし std varchar(2) latin1_swedish_ci いいえ なし
sec varchar(1) latin1_swedish_ci いいえ なし

表 10 の構造

列タイプ 照合属性 Null デフォルト ExtraAction id int(11) いいえ なし AUTO_INCREMENT
roll varchar(3) latin1_swedish_ci いいえ なし
マーク smallint(6) いいえ なし std varchar(2) latin1_swedish_ci いいえ なし

このように2番目のifブロックを変更すると

if(($dbase!=5)&&($dbase!=10))
    {
    $sect=$sec1;
            echo "roll- ";
            echo $roll;
            echo "  marks- ";
            echo $marks;
            echo " std- ";
            echo $dbase;
            echo " section- ";
            echo $sect;
            setcookie("tab", $temp, $expire, "/","skc-hs.com");
    $host="127.0.0.1"; // Host name
    $username="root"; // Mysql username
    $password=""; // Mysql password
    $db_name="data"; // Database name
    $tbl_name=$temp; // Table name
    // Connect to server and select databse.
    mysql_connect("$host", "$username", "$password")or die("cannot connect");
    mysql_select_db("$db_name")or die("cannot select DB");

    // To protect MySQL injection (more detail about MySQL injection)
    $roll = stripslashes($roll);
    $marks = stripslashes($marks);
    $roll = mysql_real_escape_string($roll);
    $marks = mysql_real_escape_string($marks);
    $sql="insert into $tbl_name (roll , marks, std, sec) values ('$roll' , '$marks' , '$dbase' '$sect')";
    mysql_query($sql);
    echo " done";
    die();
    }

HTMLフォームにこれらの値を入力すると、「ロール-12マーク-454標準-7セクション-B完了」がエコーされます。データベースにこれらの値を入力しない理由がわかりません

4

2 に答える 2

1

$dbaseと クエリの間にコンマを置くのを忘れました$sect

からクエリを変更します

   $sql="insert into $tbl_name (roll , marks, std, sec) 
          values ('$roll' , '$marks' , '$dbase' '$sect')";

   $sql="insert into $tbl_name (roll , marks, std, sec)
          values ('$roll' , '$marks' , '$dbase' , '$sect')";
于 2012-08-16T12:22:00.167 に答える
1

exit()次のコードで何かが 10 または 5 でない場合、スクリプトに表示されます。

if(($dbase!=10)&&($dbase!=5)&&($sec1=="0"))
{
    echo '<p align="center">You did not enter all data. Please go back and enter them. 3</p>';
    echo '<FORM><p align="center"><INPUT TYPE="button" VALUE="Go Back" onClick="history.go(-1);return true;"></p></FORM>';
    die();
}
于 2012-08-16T11:04:35.977 に答える