0

次のコマンドを使用して、Ubuntu 12.04 にランプをインストールしました。

$ sudo apt-get install tasksel

$ sudo tasksel install lamp-server

ブラウザで次の.phpファイルを実行し、データベースを更新して実行しました

<?php
$con=mysqli_connect("localhost","root","passwd","my_db");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

mysqli_query($con,"INSERT INTO Persons (FirstName, LastName, Age)
VALUES ('Peter', 'Griffin',35)");

mysqli_query($con,"INSERT INTO Persons (FirstName, LastName, Age)
VALUES ('Glenn', 'Quagmire',33)");

mysqli_close($con);
?> 

しかし、.html ファイルを使用して .php ファイルに接続し、mysql データベースを更新すると、.php が実行されず、フォルダー (デフォルトでダウンロード フォルダー) に保存する必要があります。.html ファイルは次のとおりです。

<html>
<body>

<form action="/var/www/insert.php" method="post">
Firstname: <input type="text" name="firstname">
Lastname: <input type="text" name="lastname">
Age: <input type="text" name="age">
<input type="submit">
</form>

</body>
</html> 

そして、insert.php ファイルは次のとおりです。

<?php
$con=mysqli_connect("localhost","root","passwd","my_db");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

$sql="INSERT INTO Persons (FirstName, LastName, Age)
VALUES
('$_POST[firstname]','$_POST[lastname]','$_POST[age]')";

if (!mysqli_query($con,$sql))
  {
  die('Error: ' . mysqli_error($con));
  }
echo "1 record added";

mysqli_close($con);
?> 

助けてください!

4

3 に答える 3

1
action="/var/www/insert.php"

あなたのパスは奇妙に見えます。試してみてください

action="insert.php"
于 2013-06-09T18:55:46.783 に答える
0

すでに指摘したように、フォームのパス/アクションが正しくありません。URL パスからの相対パスのみが必要な場合は、ファイルへの完全なローカル パスを入力しました。

action="insert.php"

それ以外は、SQL はかなり乱雑で、複数の単語の入力では機能せず、インジェクションに対して脆弱です。少なくともこれを行います:

$sql="INSERT INTO Persons (FirstName, LastName, Age) VALUES ('".mysqli_real_escape_string($_POST["firstname"])."','".mysqli_real_escape_string($_POST[lastname])."','".mysqli_real_escape_string($_POST[age])."')";

または、準備されたステートメントを調べてください。

于 2013-06-09T19:05:15.057 に答える