3

コードを php で動作させるのに問題があります。データを html のフォームから mysql データベースに移動したいのですが、動作しませんか??

フォームパーツ

 <form action ="Mydbsinsertpersson4.php" method='POST'>
 <table>
 <tr><td width='100'>För namn:<input type='text' name='fnamn'><td></tr>
 <tr><td width='100'>Efternamn:<input type='text' name='enamn'><td></tr>
 </table>
 <tr><td><input type='submit' name='Submit'  value='Submit'><td></tr>
 </form>

php部分

<?php
    if(isset($_POST["submit"])){
require_once 'Mydbconfig.php';
try {
$conn = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$sql = "INSERT INTO tpersson (Perfnamn, Perenamn)
VALUES ('".$_POST["fnamn"]."','".$_POST["enamn"]."')";
$conn = null;
}
catch(PDOException $e){
echo $e->getMessage();
}
}
?>

私のmysqlデータベースへの接続は機能します。データベースからデータを取得できますが、データベースに入力することはできません。

ありがとうございます。

これは、私が試した多くの解決策の1つであり、機能していません!!

4

3 に答える 3

3

問題は :-

<tr><td><input type='submit' name='Submit'  value='Submit'><td></tr>

そしてあなたは書く: -

if(isset($_POST["submit"])){

注:-name = submit最初の変更または $_POST["Submit"]2 番目の変更のいずれかです。ありがとう。

于 2015-07-16T06:39:08.143 に答える
0

私はこれを 2 つのファイルを使用して行うのが好きです。1 つは入力を処理するためのもので、もう 1 つは実際のフォームのためのものです。

フォーム.html:

<form action ="/assets/post_people.php" method='POST'>
<table>
<tr><td width='100'>Firstname:<input type='text' name='fname'><td></tr>
<tr><td width='100'>Lastname:<input type='text' name='lname'><td></tr>
</table>
<tr><td><input type='submit' name='Submit'  value='Submit'><td></tr>
</form>

次に、post_people.php について:

<?php
//db 
require_once 'db_connect.php';


//Get and filter input @ to avoid injections
$Firstname = mysql_real_escape_string($_POST['fname']);
$Lastname = mysql_real_escape_string($_POST['lname']);


//Check if the user has submitted the form
if(isset($_POST['Submit'])){


    //Check if the person already exist in our database
    $Check_people = mysql_query("SELECT * FROM People WHERE Firstname =     '$Firstname' AND Lastname = '$Lastname'");

if(mysql_num_rows($Check_people)==1){
    //The person already exists with exact same data!
}

//The person did not exist in our database, so we'll update.
else{


    $update_query = mysql_query("INSERT INTO People (Firstname, Lastname) VALUES ('$Firstname', '$Lastname')");

    if($update_query){
        //success
    }
    else {
        //Error

    }

}

mysql_close();  
}


//The user didnt submit the form and tried to access the file ?
//Redirect to /form.html & kill the script.
else{
header("Location: /form.html");
die;
}

これがあなたにとってうまくいくかどうかはわかりませんが、私にとってはうまくいきました:)

(はい、 mysql_ 関数は減価償却されているため使用しないことをよく知っていますが、まだ機能しており、使いやすいです:))

于 2015-07-16T06:55:28.480 に答える
0

エラー

  1. 送信タグ名が正しくありませんname='Submit'
  2. HTMLコーディング形式を改善してください(</table>タグは最後の</tr>タグの後に閉じる必要があります)
  3. を使用してSQL インジェクションを回避するmysql_real_escape_string()

したがって、最終的なコードは次のようになります

 <form action ="Mydbsinsertpersson4.php" method='post'>
     <table>
     <tr><td width='100'>För namn:<input type='text' name='fnamn'><td></tr>
     <tr><td width='100'>Efternamn:<input type='text' name='enamn'><td></tr>

     <tr><td><input type='submit' name='submit'  value='Submit'><td></tr>
     </table>
 </form>

Mydbsinsertpersson4.php

 <?php
    if(isset($_POST["submit"])){
        require_once 'Mydbconfig.php';
        try {
            $conn = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
        // set the PDO error mode to exception
            $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

            $fname = $mysqli->real_escape_string($_POST["fnamn"]);
            $ename = $mysqli->real_escape_string($_POST["enamn"]);

            $sql = "INSERT INTO tpersson (Perfnamn, Perenamn) VALUES ('$fname','$ename')";
            $conn = null;
        }
        catch(PDOException $e){
            echo $e->getMessage();
        }
    }
?>
于 2015-07-16T06:59:53.927 に答える