このようにしてみてください。すべてのフィールドが必須であるため、ユーザーがすべてのフィールドに入力しないと、データはデータベースに保存されません。
ただし、小さなホームアプリでのみ使用してください。本番サーバーには配置しないでください。インジェクションに対して依然として脆弱であるためです。
if(isset($_POST['phone'])
&& isset($_POST['tagline'])
&& isset($_POST['activity'])
&& isset($_POST['about'])){
$phone = $_POST['phone'];
$tagline = $_POST['tagline'];
$activity = $_POST['activity'];
$about = $_POST['about'];
$date=date('d-m-y');
$status='ok';
$con=mysqli_connect("localhost","root","","database");
mysqli_query($con,"UPDATE owners
SET phone='$phone', tagline='$tagline',status='$status',activity='$activity',about='$about',date='$date'
WHERE username='deiin'");
mysqli_close($con);
}
または、このように、 activity と about はオプションになります。
if(isset($_POST['phone'])
&& isset($_POST['tagline']){
$phone = $_POST['phone'];
$tagline = $_POST['tagline'];
if(isset($_POST['activity'])) $activity = $_POST['activity'];
else $activity = '';
if(isset($_POST['about'])) $about = $_POST['about'];
else $about = '';
$date=date('d-m-y');
$status='ok';
$con=mysqli_connect("localhost","root","","database");
mysqli_query($con,"UPDATE owners
SET phone='$phone', tagline='$tagline',status='$status',activity='$activity',about='$about',date='$date'
WHERE username='deiin'");
mysqli_close($con);
}
ただし、このコードには大きなセキュリティ ホールがあることに注意してください。したがって、これを運用サーバーに配置しないでください。誰かがフォームに ' 引用符を書いた場合、それは SQL クエリに挿入され、そこで終了引用符になるため、引用符に続くものはすべて SQL のコマンドとして解釈されます。そうすれば、周りのすべてのジョーカーがデータベース全体を一瞬で削除できます。mysqli_real_escape_string() または準備済みステートメントを使用する
編集: mysqli_real_escape_string() の使用方法:
たとえば の代わりに、次の$phone = $_POST['phone'];
ように mysql_real_escape_string() で囲みます。
$phone = mysql_real_escape_string( $_POST['phone'] );
もっと簡単なことはありませんよね?:)
あなたがするように、クエリ内のすべてを引用することを忘れないでください:
UPDATE owners SET phone= ---> '$phone' <--- /*those quotes are
important for it to work, remember to keep them there */
手続き型構文は奇妙で、OOP 構文はおそらくさらに奇妙に見えるので、準備済みステートメントについては説明しません。