0

私はこれを理解するために2日間試みてきました。チュートリアルからそのままコピーしましたが、まだテーブルにデータを挿入できません。これがフォーム付きの私のコードです

<font face="Verdana" size="2"> 
<form method="post" action="Manage_cust.php" >
Customer Name 
<font face="Verdana"> 
<input type="text" name="Company" size="50"></font>
<br>
Customer Type 
<font face="Verdana"> 
<select name="custType" size="1">
  <option>Non-Contract</option>
  <option>Contract</option>
</select></font>
<br>
Contract Hours 
<font face="Verdana"> 
<input type="text" name="contractHours" value="0"></font>
<br>
<font face="Verdana">
<input type="submit" name="dothis" value="Add Customer"></font>
</form>
</font> 
<font face="Verdana" size="2">

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

    $con = mysql_connect ("localhost","root","password");
    if (!$con){
    die ("Cannot Connect: " . mysql_error());
    }

    mysql_select_db("averyit_net",$con);

    $sql = "INSERT INTO cust_profile (Customer_Name, Customer_Type, Contract_Hours)   VALUES 
    ('$_POST[Company]','$_POST[custType]','$_POST[contractHours]')";

    mysql_query($sql, $con);

    print_r($sql);


    mysql_close($con);
    }
?>

これは私のPHPmyadminサーバー情報です:

サーバー: TCP/IP 経由の 127.0.0.1 ソフトウェア: MySQL ソフトウェア バージョン: 5.5.27 - MySQL Community Server (GPL) プロトコル バージョン: 10 ユーザー: root@localhost サーバー文字セット: UTF-8 Unicode (utf8)

これが機能しない理由を教えてください。サイトを実行すると情報が入力され、送信ボタンを押すと消えますが、テーブルには入りません。表示されるエラー メッセージはありません。ヘルプ

4

3 に答える 3

0

SQLステートメントを少し改善し、配列に格納しました。これは、投稿データが実際に設定されていることを確認するためです。設定されていない場合、null値がスローされます。常に入力をサニタイズしてください。

Manage_cust.phpで:

<?php

if (isset($_POST['dothis'])) 
{

$con = mysql_connect ("localhost","root","password");
    if (!$con)
    {
        die ("Cannot Connect: " . mysql_error());
    }

mysql_select_db("averyit_net",$con);

$company = isset($_POST['Company'])?$_POST['Company']:NULL;
$custype = isset($_POST['custType'])?$_POST['custType']:NULL;
$hours   = isset($_POST['contractHours'])?$_POST['contractHours']:NULL;

$sql = "INSERT INTO cust_profile(Customer_Name, 
                                 Customer_Type, 
                                 Contract_Hours)   
        VALUES('$company',
               '$custype',
               '$hours')
       ";

       mysql_query($sql, $con);

       mysql_close($con);
}
?>
于 2013-03-21T02:00:54.380 に答える
0

まず第一に、fontタグを使用しないでください...今までに

第二に、この行のために:

if (isset($_POST['dothis'])) {

HTMLとPHPが1つのスクリプトに結合されているように見えますか?この場合、フォームのアクションを次のように変更する必要があります。

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" >

さらに、1行で不良接続を切断できます。

$con = mysql_connect("localhost","root","password") or die("I died, sorry." . mysql_error() );

で投稿を確認してisset()から、変数に値を割り当てます。

var $company;
if(isset($_POST['Company']) {
    $company = $_POST['Company'];
} else {
    $company = null;
}
//so on and so forth for the other fields

または、三項演算子を使用します

また、元のmysqlPHPAPIを使用することは通常悪い選択です。APIのPHPマニュアルにも記載されています

常に一緒に行く方が良いのでmysqliPDOそれを変換しましょう:

//your connection
$conn = mysqli_connect("localhost","username","password","averyit_net");

if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}


$sql = "INSERT INTO cust_profile (Customer_Name, Customer_Type, Contract_Hours) 
        VALUES ($company,$custType,$contractHours)";
            //  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
            //  Assuming you set these

$stmt = mysqli_prepare($conn, $sql);
$stmt->execute();
$stmt->close();

誰かがこれが間違っているかどうか教えてくれるので、私はそれを修正することができます。しばらく使っていませんmysqli

于 2013-03-21T02:01:29.280 に答える
0

$sql を次のように変更します。

$sql = "INSERT INTO cust_profile (Customer_Name, Customer_Type, Contract_Hours)   VALUES ('".$_POST[Company]."','".$_POST[custType]."','".$_POST[contractHours]."')
于 2014-01-18T20:36:00.877 に答える