2017-07-23 59 views
0

我想將用戶添加到數據庫,但每當我嘗試添加用戶時,它說用戶添加但數據庫顯示沒有新用戶。 這裏是代碼:插入語句不會插入,也沒有錯誤

<form method="post" name="input" action=""> 
    <label>StaffID:<br/> <input name="staffid" type="number"><br></label> 
    <label>Username:<br/> <input name="username" type="text" min="0"><br></label> 
    <label>Password:<br/> <input name="password" type="text" min="0"><br></label> 
    <input type="submit" name="submit" value="Add User"> 
</form> 

<?php 
    $SID = $_POST['staffid']; 
    $UN = $_POST['username']; 
    $PW = $_POST['password']; 

    $conn = mysqli_connect("fdb14.awardspace.net", "2219658_ashtonb", "dojustly01", "2219658_ashtonb"); 

    if($SID !=''||$UN !=''||$PW !=''){ 
     $sql = "INSERT INTO staffusers(username, password, staffid) VALUES($UN, $PW, $SID)"; 
     mysqli_query($conn, $sql); 

     echo "<br><br><span>User added successfully!</span>"; 
    } 
?> 

我不知道我在做什麼錯,請幫助。

+1

你的值必須加引號。你應該考慮SQL注入。所以在你的查詢中使用佔位符。你應該閱讀一個mysqli教程!你應該現在改變你的數據庫密碼(在這裏發佈之後) – steven

+1

請注意,你或者||應該是&的&&。 –

+0

@steven不用擔心數據庫中有另一個登錄層,因爲它是託管網站的獎勵空間,它本身需要密碼。一旦語句實際工作,sql注入只是一個問題。 – ashjim

回答

0
<form method="post" name="input" action=""> 
    <label>StaffID:<br/> <input name="staffid" type="number"><br></label> 
    <label>Username:<br/> <input name="username" type="text" min="0"><br></label> 
    <label>Password:<br/> <input name="password" type="text" min="0"><br></label> 
    <input type="submit" name="submit" value="Add User"> 
</form> 

<?php 
    $SID = $_POST['staffid']; 
    $UN = $_POST['username']; 
    $PW = $_POST['password']; 

    $conn = mysqli_connect("fdb14.awardspace.net", "2219658_ashtonb", "dojustly01", "2219658_ashtonb"); 

    if($SID !='' && $UN !='' && $PW !=''){ 
     $sql = "INSERT INTO staffusers(username, password, staffid) VALUES('$UN', '$PW', $SID)"; 
     mysqli_query($conn, $sql); 

     echo "<br><br><span>User added successfully!</span>"; 
    } 
?> 

您嘗試在數據庫中以整數形式插入字符串值。添加撇號將幫助您的MySQL語句將其作爲字符串插入。

並保持耐心:如果一個或多個文本字段爲空,並且您不能將$_POST分配給變量。因此它會遇到錯誤。 用isset()檢查您的$_POST

此外,我在IF-陳述中將||替換爲&&。插入空值也可能產生錯誤。

1
<?php 
$SID = $_POST['staffid']; 
$UN = $_POST['username']; 
$PW = $_POST['password']; 

$conn = mysqli_connect("fdb14.awardspace.net", "2219658_ashtonb", "dojustly01", "2219658_ashtonb"); 

if($SID !='' && $UN !='' && $PW !=''){ 
    $sql = mysqli_prepare($conn, "INSERT INTO staffusers(username, password, staffid) VALUES (?, ?, ?)"); 
    mysqli_stmt_bind_param($sql, 'ssd', $UN, $PW, $SID); 
    if(mysqli_stmt_execute($sql)){ 
    echo "<br><br><span>User added successfully!</span>"; 
    } 
} 
?> 

變化

  1. 使用mysqli_prepare() & mysqli_stmt_bind_param()到 執行查詢。

  2. 變化if($SID !=''||$UN !=''||$PW !=''){變爲 if($SID !=''||$UN !=''||$PW !=''){

+0

$ stmt變量未定義。 – ashjim

+0

我的壞。再次嘗試@ashjim –

+0

複製代碼。我更新了@ashjim –

0

包含正確的錯誤代碼中的檢查,然後就可以看到錯誤。你可以試試這個修改後的代碼(從上面的代碼中派生:記得暴露你的服務器的詳細信息將成爲黑客邀請)...

<form method="post" name="input" action=""> 
    <label>StaffID:<br/> <input name="staffid" type="number"><br></label> 
    <label>Username:<br/> <input name="username" type="text" min="0"><br></label> 
    <label>Password:<br/> <input name="password" type="text" min="0"><br></label> 
    <input type="submit" name="submit" value="Add User"> 
</form> 

<?php 
    if(isset($_POST['submit'])){ 
     $SID = $_POST['staffid']; 
     $UN = $_POST['username']; 
     $PW = $_POST['password']; 

     //echo $SID.$UN.$PW; 

     if($SID !='' && $UN !='' && $PW !=''){ 

      $con = mysqli_connect("fdb14.awardspace.net", "2219658_ashtonb", "dojustly01", "2219658_ashtonb"); 
      // Check connection 
      if (mysqli_connect_errno()) 
      { 
       echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
      } 
      else 
      { 
       $sql = "INSERT INTO staffusers(username, password, staffid) VALUES($UN, $PW, $SID)"; 
       mysqli_query($conn, $sql); 
       echo "<br><br><span>User added successfully!</span>"; 
      } 
     } 
    } 
?> 

如果您在服務器上運行的代碼將工作(在必須由fdb14.awardspace.net pionted服務器遠程SQL訪問服務器域名地址。

但是,如果你正在運行必須由fdb14 pionted服務器遠程SQL訪問本地主機或其他服務器上的代碼.awardspace.net域地址,將會得到這個錯誤:警告:mysqli_connect():(HY000/2002):由於目標機器主動拒絕,所以無法建立連接。在第18行的C:\ Program Files文件(x86)\ EasyPHP-Devserver-16.1 \ eds-www \ remote-sql-test \ index.php 無法連接到MySQL:由於目標機器主動拒絕,無法建立連接它。

這個錯誤是不是從你的代碼,你的遠程服務器設置相關的這種誤差(remeber本地主機也是一個服務器的概念),你可能需要配置合適的遠程SQL訪問,有關遠程SQL的詳細信息,請參閱cPanel documentation

+0

沒有錯誤彈出。 – ashjim

+0

如果用戶添加成功!顯示,登錄到你的面板,並檢查天氣記錄是否被插入。如果一切都很好 - 標記爲答案,則必須在實際使用之前添加SQL注入預防功能。 –

0

,而不是這個

<?php 
    $SID = $_POST['staffid']; 
    $UN = $_POST['username']; 
    $PW = $_POST['password']; 

    $conn = mysqli_connect("fdb14.awardspace.net", "2219658_ashtonb", "dojustly01", "2219658_ashtonb"); 

    if($SID !=''||$UN !=''||$PW !=''){ 
     $sql = "INSERT INTO staffusers(username, password, staffid) VALUES($UN, $PW, $SID)"; 
     mysqli_query($conn, $sql); 

     echo "<br><br><span>User added successfully!</span>"; 
    } 
?> 

使用此代碼插入用戶記錄

<?php 
if(isset($_POST['submit'])) 
{ 
    $SID = $_POST['staffid']; 
    $UN = $_POST['username']; 
    $PW = $_POST['password']; 

    $conn = mysqli_connect("fdb14.awardspace.net", "2219658_ashtonb", "dojustly01", "2219658_ashtonb"); 

    if($SID !=''||$UN !=''||$PW !=''){ 
     $sql = "INSERT INTO staffusers(username, password, staffid) VALUES('".$UN."','".$PW."','".$SID."')"; 
     $result=mysqli_query($conn, $sql); 
      if(!$result) 
      { 
       echo "<br><br><span>not Inserted!</span>"; 
      } 
      else 
      { 
       echo "<br><br><span>User added successfully!</span>"; 
      } 


    } 
} 
?>