入力フォーム、基本的にはユーザーが情報を更新/変更できる設定ページでMySQLデータベースを更新したいと思います。以下のこのコードでは、下部のエコーが実行され、エラーは発生しませんが、データベースは更新されません。ローカルマシンとサーバーの両方でテストしましたが、どちらでも機能しませんでしたが、それが関係するかどうかはわかりません。$_SESSION['yourName']
ユーザーがログインしたときにすでに設定されているため、データベースの現在の値と等しくなります。ここにはSQLインジェクションの穴がたくさんあることは知っていますが、これは概念実証コードであり、すぐに使用できる状態ではありません。phpMyAdminでクエリを実行してみましたが、正常に機能しました。
PHP
if(isset($_POST['name']) || isset($_POST['password']) || isset($_POST['location']) || isset($_POST['img'])) {
//put this in an external file for a little extra security
$username = "my_username";
$password = "my_password";
$database = "database_name";
$con = mysql_connect('localhost',$username,$password);
if (!$con) {
die('Oh poop.... Could not connect: ' . mysql_error());
}
//print item from database
mysql_select_db($database, $con);
if(isset($_POST['name'])) {
$query = 'UPDATE users SET username=' . $_POST['name'] . 'WHERE username=' . $_SESSION['yourName'];
mysql_query($query);
$_SESSION['yourName'] = $_POST['name'];
}
if(isset($_POST['password'])) {
$query = 'UPDATE users SET password=' . $_POST['password'] . 'WHERE username=' . $_SESSION['yourName'];
mysql_query($query);
}
if(isset($_POST['location'])) {
$query = 'UPDATE users SET location=' . $_POST['location'] . 'WHERE username=' . $_SESSION['yourName'];
mysql_query($query);
$_SESSION['location'] = $_POST['location'];
}
if(isset($_POST['img'])) {
$query = 'UPDATE users SET img=' . $_POST['img'] . 'WHERE username=' . $_SESSION['yourName'];
mysql_query($query);
$_SESSION['img'] = $_POST['img'];
}
echo '<script type="text/javascript">alert("changes saved")</script>';
}
HTML
<form method="post">
new name: <input type="text" name="name" /><br />
new password: <input type="text" name="password" /><br />
new location: <input type="text" name="location" /><br />
new img: <input type="text" name="img" /><br />
<input type='submit' name='save' value='save' />
<input type='submit' name='logout' value='logout' />
</form>