5

送信ボタンがクリックされたときにデータベースを更新するこの関数を作成しました。しかし、うまくいかないようです。このスクリプトは、id を介してユーザーのログイン詳細を使用してデータベースからユーザーの値を取得し、フォームに入力することを目的としています。この機能は、フォームのテキスト フィールドが変更されたときに、ユーザーの詳細を更新するのに役立ちます。

デバッグの助けが必要です。

libraries.php
function db(){ //handles database connection

//connect to the database server or die and spit out connection error
$conn = mysql_connect('localhost','root', '') or die("Cannot connect to the database server now". mysql_error());
//select database table or die and spit out database selection error
mysql_select_db('newbishop',$conn) or die("Error in selecting database now ".mysql_errno());
  return $conn;  
}


personalsettings.php
<?php
include_once('libraries.php'); // contains the database function
session_checker();

db();
$categoryid = $_SESSION['id'];
$select =  "SELECT * FROM users WHERE categoryid ='$categoryid' LIMIT 1";
$row1 = dbprocess ($select);
$rows = mysql_fetch_assoc($row1);
$pname1 = $rows['pname'];
$email1 = $rows['email'];
$user1 = $rows['user'];
$pass1 = $rows['pass'];
$salt1 = $rows['salt'];
$phone1 = $rows['phone'];
$accesslevel = $rows['accesslevel'];
$position = $rows['position'];

function update(){
   db(); // database function
   $pname = $_POST['pname'];
   $categoryid = $_POST['categoryid'];
   $email = $_POST['email'];
   $phone = $_POST['phone'];
   $user = $_POST['users'];
   $pass = $_POST['pass'];

   function createSalt(){
     $string = md5(uniqid(rand(), true));
     return substr($string, 0, 3);
   };

   $salt = createSalt();
   $hash = hash('sha256', $salt . $pass);

   $sql = "UPDATE users SET user=?,pass=?,salt=?,pname=?,email=?,phone=? WHERE categoryid=?";
   $q = $conn->prepare($sql);
   $q->execute(array($user,$hash,$salt,$pname,$email,$phone,$categoryid));
}

?>

個人設定の編集フォーム

<input name="users" type="text" id="users" class="users" autocomplete="off" value="<?php echo $user1;  ?>" />

<input type="text" autocomplete="off" name="pass" id="pass" placeholder="Create password" class="passwd" value="<?php echo $pass;  ?>"/>
    <input type="hidden" name="salt" id="salt" value="<?php echo $salt1;  ?>"/>


    <input name="pname" type="text" id="lname" placeholder="Name of Group" class="input-block-level" value="<?php echo $pname1;  ?>"/>

   <input type="hidden" id="categoryselect" name="categoryselect"/> 
   <input name="categoryid" type="text" id="resultselect"   readonly class="input-block-level" value="<?php echo $_SESSION['id'];  ?>"/>


    <input type="text" name="email" id="email" placeholder="Email Address" class="input-block-level" value="<?php echo $email1;  ?>"/>


    <input type="text" name="phone" id="phone" placeholder="Enter Phone Number" class="input-block-level" value="<?php echo $phone1;  ?>"/>


    <input type="text" name="accesslevel" id="accesslevel" class="input-block-level" value="<?php echo $accesslevel;  ?>" readonly/>



    <input type="text" name="position" id="position" class="input-block-level" value="<?php echo $position;  ?>" readonly/>


    <button type="submit" class="btn btn-small btn-primary" name="register" id="register" value="Register" onclick="update()">Submit</button>
  </form>
4

4 に答える 4

4
db(); // database function

関数の戻り値を に代入するのを忘れていたようです$conn

正しいはずです:

$conn = db();
于 2013-04-23T16:47:51.407 に答える
0

の前の行の一番下にこのコードを追加してみてください?>:

if isset($_POST['user']) { update(); }
于 2013-04-23T16:46:58.943 に答える
0

これは大まかな例であり、テストしていません。ここにあるので、画像を取得できます。

関数

 function update_db($data, $update){
   $conn = new PDO('mysql:host=locahost; dbname=xxxx', 'xxx', 'xxx');
   $stmt = $conn->prepare("UPDATE table, SET something=? WHERE id = ? ");
   $stmt->execute(array($data, $update));

  if($stmt->rowCount() > 0){
     return 'Updated';}
  else {
     return 'Something is wrong';
    }
 }

それを呼び出す

if(isset($_GET['data'])) {
$data = $_GET['data'];
$update = 'text';


echo update_db($data, $update)

}
于 2013-04-23T16:50:31.593 に答える