2017-04-11 35 views
-1

我想給用戶更改用戶類型既可以成爲管理員或一個基本的用戶權限,這是我使用的代碼:什麼應該被添加到更新查詢

第一頁:

$usertype= $_POST['usertype']; 
$empID= $_POST['id']; 
$sql="UPDATE `sap` SET `UserType`='$usertype' WHERE `ID`='$empID'"; 

,但是當我檢查數據庫沒有被更新,誰能告訴我寬:

echo "<p>please type the employee ID</p><input type='number' name='id'>"; 
echo "<p> Change to: </p><select name='usertype'> 
     <option>Admin</option> 
     <option>Basic User</option> 
     </select>"; 
點擊提交它進入這個頁面後

帽子我錯過請

+0

你得到的任何錯誤?你執行了查詢還是不行(我沒有看到執行代碼)? –

+3

您沒有執行查詢。你只是建立一個字符串。另外請注意,您構建要執行的SQL字符串的方式會導致SQL注入問題。 –

+0

你需要執行查詢 –

回答

2

你永遠不執行查詢你需要query()mysqli_query();

執行查詢你的代碼應該是

<?php 

$usertype= $_POST['usertype']; 
$empID= $_POST['id']; 

$sql="UPDATE `sap` SET `UserType`='$usertype' WHERE `ID`='$empID'"; 

$run = $conn->query($sql); 

if($run){ 

    echo "data updated"; 
}else{ 

    echo "error". $conn->error; 
} 

?> 

<?php 

$usertype= $_POST['usertype']; 
$empID= $_POST['id']; 

$sql="UPDATE `sap` SET `UserType`='$usertype' WHERE `ID`='$empID'"; 

$run = mysqli_query($conn, $sql); 

if($run){ 

    echo "data updated"; 
}else{ 

    echo "error ".mysqli_error($conn); 
} 

?> 

其中$conn是你的連接字符串

或更好地利用預處理語句:

<?php 
$usertype= $_POST['usertype']; 
$empID= $_POST['id']; 

$sql="UPDATE `sap` SET `UserType`= ? WHERE `ID`= ? "; 
$run = $conn->prepare($sql); 
$run->bindParam("si",$usertype,$empID) 

if($run->execute()){ 

    echo "data updated"; 
}else{ 

    echo "error". $conn->error; 
} 
?> 

或使用PDO

<?php 


    $host = ''; 
    $db = ''; 
    $user = ''; 
    $pass = ''; 
    $charset = 'utf8'; 

    $dsn = "mysql:host=$host;dbname=$db;charset=$charset"; 
    $opt = [ 
      PDO::ATTR_ERRMODE   => PDO::ERRMODE_EXCEPTION, 
      PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, 
      PDO::ATTR_EMULATE_PREPARES => false, 
      ]; 


$dbh = new PDO($dsn, $user, $pass, $opt); 


$usertype= $_POST['usertype']; 
$empID= $_POST['id']; 


$sql="UPDATE `sap` SET `UserType`= ? WHERE `ID`= ? "; 

    $stmt = $dbh->prepare($sql); 

    if($stmt->execute(array($usertype,$empID))){ 

     echo "data updated"; 
    } 

?> 

mysqli_query

+0

我完全忘了補充一點,謝謝! –

0

在你的問題,你有很多小姐。因此,我決定編寫完整的示例代碼,並且可以看到所有的遺漏。 這裏是工作的解決方案:

<?php 
$usertype= $_POST['usertype']; 
$empID= $_POST['id']; 
$pdo = new PDO('mysql:host=localhost;dbname=db8', "root", ""); 
$stmt = $pdo->prepare("UPDATE `table1` SET `UserType`= ? WHERE `ID`= ?"); 
$stmt->execute([$usertype, $empID]); 

echo "<form action='' method='post'>"; 
echo "<p>please type the employee ID</p><input type='number' name='id'>"; 
echo "<p> Change to: </p><select name='usertype'> 
     <option>Admin</option> 
     <option>Basic User</option> 
     </select>"; 
echo "<input type='submit' value='submit'>"; 
?> 

我在這裏爲每一個你的問題。

+0

不提供代碼解答。解釋你做了什麼。 –

0
$host='localhost'; 
$username = 'root'; 
$pass = '';// your db password 
$database = 'your db name'; // set here your db name. 
$connection = new mysqli($host,$username,$pass,$database);// for db connection. 

// but db connection is missed here. 

if(isset($_POST['usertype'])){ 
    $usertype= $_POST['usertype']; 
    $empID= $_POST['id']; 

    $sql ="UPDATE `sap` SET `UserType`='$usertype' WHERE ID ='$empID'"; 
    $result = $connection->query($sql);// it is missed in your code. 

    if($result){ 
    echo 'record updated successfully'; 
    }else{ 
    echo ' error------------- '; 
    } 


} 
+0

不提供代碼解答。 *解釋*你做了什麼。 –