0

テキストボックスコードからエントリを取得してphpフォームに移動し、phpフォームにデータベースに送信させようとしています。私が抱えている問題は、テキストボックスの値を投稿する代わりに、$codeを投稿することです。私はmysqlとphpを使用しています。

PHP:

<?
if( $_POST )
{
$username="***";
$password="***";
    $con = mysql_connect("***",$username,$password);

    if (!$con)
    {
        die('Could not connect: ' . mysql_error());
    }

    mysql_select_db("inmoti6_mysite", $con);

    $code = $_POST['code'];


    $code = htmlspecialchars($code); 


    $query = 'INSERT INTO `storycodes`.`storycodes` (`code`) VALUES ("$code");';


    mysql_query($query);

    echo "<h2>Thank you for your Comment!</h2>";

    mysql_close($con);
}
?>

これが問題であることは間違いありませんが、HTMLは次のとおりです。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Database</title>
</head>

<body>
<form id="form1" name="form1" method="post" action="/scripts/database2.php">
  <label>Code:
  <input name="code" type="text" id="code" value="" size="45" />
</label>
  <p>
    <label>
    <input type="submit" name="submit" id="submit" value="Submit" />
    </label>
  </p>
</form>
</body>
</html>
4

2 に答える 2

2

文字列で認識される変数には二重引用符を使用する必要があるため、次のように変更します。

$query = 'INSERT INTO `storycodes`.`storycodes` (`code`) VALUES ("$code");';

$query = "INSERT INTO `storycodes`.`storycodes` (`code`) VALUES ('$code');";

SQLインジェクションの問題もあります。プリペアドステートメントとバインドされた変数を使用してPDO(またはmysqli)に切り替えることをお勧めします。少なくともmysql_real_escape_string、データベースに変数を挿入する前に変数を使用する必要がありますが、マニュアルに示されているように、mysql_*関数は非推奨になっています。

于 2013-02-02T14:23:16.383 に答える
0

$ codeを投稿せず、変数の代わりに$codeを値として使用します。問題は引用符に関連しています。

$query = "INSERT INTO `storycodes`.`storycodes` (`code`) VALUES (\"$code\");";

これを試してください。

于 2013-02-02T14:23:26.297 に答える