0

テキスト フォームからデータベースに情報を転送したいだけですが、値がデータベースに正しく表示されません。ここに私が持っているものがあります:

フォームの HTML コード:

<form method="post" action="process.php">

    <input type="text" maxlength="150" name="textbox">
    <input type="submit" name="submit">

</form>

プロセス.php

<?php
$con=mysqli_connect($host, $username, $password, $database);

$sql = mysqli_query($con,"INSERT INTO notes (User, Note)
VALUES ('test', '$_POST [textbox]')");

// I also tried writing $_POST ['textbox'] instead; didn't make a difference.

?>

ただし、データベースの出力は次のとおりです。

ユーザー:テスト
注:配列 [テキスト ボックス]

Note 列の値を修正するにはどうすればよいですか (つまり、フォームに入力された値にするには)?

4

3 に答える 3

3

まず、$_POST と ['textbox']; の間にスペースがありました。それはちょうど $_POST['textbox'] であるべきでした...

ただし、最初にデータをサニタイズする必要もあります...これを試してください

$input = mysqli_real_escape_string($_POST['textbox']);

$sql = mysqli_query($con,"INSERT INTO notes (User, Note)
VALUES ('test', '$input')");

しかし、実際には、非推奨の mysql_* 関数の代わりに PDO を使用する必要があります... Google PDO を使用して、準備されたステートメントを実行する方法を学びます。

ここにPDOがあります...

 $conn = new PDO("mysql:host=$host;dbname=$database",$username,$password);

 $user = 'Test';
 $note = $_POST['textbox'];

 $sql = "INSERT INTO notes (User, Note) VALUES (:user,:note)";
 $q = $conn->prepare($sql);
 $q->execute(array(':user'=>$user,
              ':note'=>$note));

編集...また、入力が閉じられていないことに気付きました。それぞれの最後に / があるはずです...

<form method="post" action="process.php">

    <input type="text" maxlength="150" name="textbox" />
    <input type="submit" name="submit" />

</form>
于 2013-06-07T21:47:27.720 に答える
0

$_POST と [textbox] の間にスペースがあります。$_POST は配列です。したがって、配列 [テキスト ボックス]、つまり: ArraySPACE[テキスト ボックス]

スペースを削除してから、準備済みステートメントの使用を検討する必要があります。最初にサニタイズせずに、ユーザーが送信したデータを直接使用しないでください。

于 2013-06-07T21:47:29.270 に答える
-1
$sql = mysqli_query($con,"INSERT INTO notes (User, Note)
VALUES ('test', '{$_POST['textbox']}')");
于 2013-06-07T21:47:25.973 に答える