0

ローカル マシンでフォーム、データベース テーブルなどを作成しましたが、データが挿入されません。print the sql query を実行して PHP myadmin に貼り付けると、値が挿入されます。値をデータベースに挿入しないという問題を特定する際に、誰かが私を導くことができますか? 以下は私のコードです:

POST の値を見ないでください。彼らは順調に来ています。問題は、私が考えるPHPコードにあるに違いありません。

$hlr2RegQty=$_POST['txtHLR2Reg'];
$hlr2MicroQty=$_POST['txtHLR2Micro'];
$hlr2NanoQty=$_POST['txtHLR2Nano'];

$hlr3RegQty=$_POST['txtHLR3Reg'];
$hlr3MicroQty=$_POST['txtHLR3Micro'];
$hlr3NanoQty=$_POST['txtHLR3Nano'];
$count= $hlr1RegQty+$hlr2RegQty+$hlr3RegQty+$hlr1MicroQty+$hlr2MicroQty+$hlr3MicroQty+$hlr1NanoQty+$hlr2NanoQty+$hlr3NanoQty;

$conn=mysql_connect('localhost','root','');

mysql_select_db('prime_comm', $conn);

$query="INSERT INTO `prime_comm`.`newsim`(`Invoice No`, `HLR-1`, `HLR-2`, `HLR-3`, `HLR-4`, `MICRO-1`, `MICRO-2`, `MICRO-3`, `NANO-1`, `NANO-2`, `NANO-3`, `Total Count`, `Amount`, `VAT`) 
            VALUES( $invoiceNo, $hlr1RegQty,$hlr2RegQty,$hlr3RegQty,0,$hlr1MicroQty,$hlr2MicroQty,$hlr3MicroQty,$hlr1NanoQty,$hlr2NanoQty,$hlr3NanoQty,$count, 0,0)";
$flag = mysql_query($query);
?>
4

5 に答える 5

1

最初に接続を確認した方がよい

$check = mysql_connect('localhost', '', '');
    if (!$check) {
        die('Could not connect: ' . mysql_error());
    }

そのエラー メッセージが表示されない場合は、挿入するすべてのデータを var_dump() して、null かどうかを確認してください。

于 2014-02-12T07:44:06.007 に答える
1

まず第一に、SQL インジェクションに対して脆弱です。これは深刻なセキュリティ ホールです。

次に、値を ' に入れる必要があります

そのように ($value は最初に mysql_real_escape_string などでサニタイズする必要があります):

'$value'
于 2014-02-12T07:39:44.107 に答える
1

現在無視しているエラー メッセージも確認してください。

$flag = mysql_query($query) or die(mysql_errno() . ' ' . mysql_error());

これにより、クエリの何が問題なのかについてより多くの洞察が得られます。また、データベースでSQLインジェクションを実行できるため、入力をサニタイズするようにしてください。

于 2014-02-12T07:40:15.660 に答える
0

このようにしてみてください:

mysql_query("INSERT INTO  tablename (row-name-1, row-name-2)
values({$variable1}, {$variable2})");

mysqli_query を使用する必要があります。そうしないと、msql インジェクションに脆弱になります。

于 2014-02-12T13:42:44.287 に答える
0

変数を一重引用符で囲んでみてください。

$query="INSERT INTO `prime_comm`.`newsim`(`Invoice No`, `HLR-1`, `HLR-2`, `HLR-3`, `HLR-4`, `MICRO-1`, `MICRO-2`, `MICRO-3`, `NANO-1`, `NANO-2`, `NANO-3`, `Total Count`, `Amount`, `VAT`) 
            VALUES( '$invoiceNo', '$hlr1RegQty', '$hlr2RegQty', '$hlr3RegQty', 0, '$hlr1MicroQty', '$hlr2MicroQty', '$hlr3MicroQty', '$hlr1NanoQty', '$hlr2NanoQty', '$hlr3NanoQty', '$count', 0,0)";

また、SQL インジェクションに対して広く開かれているため、投稿データが期待どおりである、またはクリーン/安全であると想定しないでください。また、新しいバージョンの PHP では非推奨になっている mysql_* 関数よりも mysqli_* 関数を使用することをお勧めします。お役に立てれば :)

于 2014-02-12T07:41:00.793 に答える