This is stripped down as much as possible and still have the code work. This form only has 6 input fields but that can grow to 20 or more.
This was my first attempt at constructing a prepared statement and basically the first time writing mysqli_*.
[code]<?php
/* Contains connection variables and $site */
include “con_and_site.php”;
/* retrieve subdomain = username */
$host = explode(’.’, $_SERVER[“HTTP_HOST”]);
if ($host[0] == ‘www’) array_shift($host);
//Remove the base domain. Assumes a one dot (example.com) domain
$host = array_slice($host, 0, -2);
$sub_d = implode(’.’, $host);
$pas = (isset($_GET[‘pas’]) ? $_GET[‘pas’] : null);
$list = (isset($_POST[“list”]) ? $_POST[‘list’] : null);
$fname = (isset($_POST[“fname”]) ? $_POST[‘fname’] : null);
$lname = (isset($_POST[“lname”]) ? $_POST[‘lname’] : null);
$user1 = (isset($_POST[“user1”]) ? $_POST[‘user1’] : null);
$user2 = (isset($_POST[“user2”]) ? $_POST[‘user2’] : null);
$user3 = (isset($_POST[“user3”]) ? $_POST[‘user3’] : null);
/* There are about 12 more of these. */
$save = (isset($_POST[“save”]) ? $_POST[‘save’] : null);
$i = (isset($_POST[“i”]) ? $_POST[‘i’] : null);
/* Pre-qualify update */
$update = “1”; // update = Yes
if($sub_d === “” || $pas === NULL){$update = “0”;} // Update = No
/* Defining variables */
$message = “Use this form to update your information.”;
$status_msg = “0”;
$pass = “?pas=$pas”;
if($update === “1”) { // bypassed if update reset to 0
/* ** Procedural style prepared statements ** */
$link = mysqli_connect("$fee", “$fie”, “$foe”, “$fum”);
if (mysqli_connect_errno()) {
printf(“Connect failed: %s\n”, mysqli_connect_error());
exit();
}
if($save !==“1”) {
// find user - match user1 and user2 to variables $sub_d and $pas
$query = “SELECT fname
,lname
,user1
,user2
,user3
FROM lm_users
WHERE user1
= ? AND user2
= ?”;
$stmt = mysqli_prepare($link, $query);
mysqli_stmt_bind_param($stmt, ‘ss’, $sub_d, $pas );
/* execute statement */
mysqli_stmt_execute($stmt);
/* store result */
mysqli_stmt_store_result($stmt);
if (mysqli_stmt_num_rows($stmt) < “1”){ $update = “0”; }
/* bind result variables */
mysqli_stmt_bind_result($stmt, $fname, $lname, $user1, $user2, $user3);
/* fetch values */
while (mysqli_stmt_fetch($stmt)) {$fname; $lname; $user1; $user2; $user3;}
/* close statement */
mysqli_stmt_close($stmt);
} // closing - if save !==1
} // closing - if update=1
if($update === “1”) { // bypassed if $update is now “0”
// SAVE
if($save === “1”) {
$query2 = “UPDATE lm_users
SET fname
= ?, lname
= ?, user3
= ?
WHERE user1
= ? AND user2
= ?”;
$stmt2 = mysqli_prepare($link, $query2);
mysqli_stmt_bind_param($stmt2, ‘sssss’, $fname, $lname, $user3, $sub_d, $pas);
mysqli_stmt_execute($stmt2);
mysqli_stmt_close($stmt2);
/* Retrieve updated content and populate form */
$row = “SELECT fname
,lname
,user1
,user2
,user3
FROM lm_users
WHERE user1
= ? AND user2
= ?”;
$stmt3 = mysqli_prepare($link, $row);
mysqli_stmt_bind_param($stmt3, ‘ss’, $sub_d, $pas);
mysqli_stmt_execute($stmt3);
/* likely do not need this */
mysqli_stmt_store_result($stmt3);
if (mysqli_stmt_num_rows($stmt3) < “1”){ exit;}
/* bind result variables */
mysqli_stmt_bind_result($stmt3, $fname, $lname, $user1, $user2, $user3);
/* fetch values */
while (mysqli_stmt_fetch($stmt3)) {$fname; $lname; $user1; $user2; $user3;}
/* close statement */
mysqli_stmt_close($stmt3);
/* activate message */
$status_msg = “1”;
/* close connection */
mysqli_close($link);
if($status_msg !== “0”) {
$a = $i + 1;
$i = $a;
if($i %2 == 0)
{
$message = "Your Information has been saved again!";
}
else
{
$message = "Your Information has been saved!";
}
}
} //closing if save=1
$sub_d = htmlspecialchars($sub_d);
$pas = htmlspecialchars($pas);
$fname = htmlspecialchars($fname);
$lname = htmlspecialchars($lname);
$user1 = htmlspecialchars($user1);
$user2 = htmlspecialchars($user2);
$user3 = htmlspecialchars($user3);
echo "
First Name: <input name=“fname” size=“45” type=“text” value="$fname">
Last Name: <input name=“lname” size=“45” type=“text” value="$lname">
<textarea name=“user3” style=“height: 200px”> $user3
<input value=“Submit Changes” type=“submit”> $message $i
";
exit();
} // closing 2nd if update=1
?>
You must use your personal URL with password to update your information.
[/code]