2015-10-19 78 views
1

我的壞名字錯了。php中的更新表

但它仍然不更新,它說0記錄更新。它應該是1

這是我輸入字段:

<?php 
if($_SESSION['admin'] > 0) 
{ 

echo'<div id="registreer">'; 
echo'<div id="titel">update</div>'; 
echo'<form action="done.php" method="post">'; 
echo'<input type="text" name="regname" placeholder="username" /> '; 
echo'<input type="password" name="regpass" placeholder="password" />'; 
echo'<input type="text" name="regdbhost" placeholder="host" /> '; 
echo'<input type="text" name="regdbuser" placeholder="user" /> '; 
echo'<input type="text" name="regdbpass" placeholder="dbpass" /> '; 
echo'<input type="text" name="regdbname" placeholder="dbname" /> '; 
echo'<input type="text" name="regdbtable" placeholder="table" /> '; 
echo"<button type='submit' name='regsubmit' value='register'>"; 
echo'<p>UPDATE</p>'; 
echo'</button>'; 
echo'</form>  '; 
echo'</div>'; 
echo'<a href="hetwerkt.php">terug</a>'; 
} 

else if($_SESSION['admin'] < 1) 
{ 
header("Location: hetwerkt.php"); 
} 
?> 

當你點擊更新時,它會送你到done.php

<?php 
session_start(); 
?> 

<?php 

$servername = "----"; 
$username = "----"; 
$password = "----"; 
$dbname = "----"; 

$name = mysql_real_escape_string($_POST['regname']); 
$pass = mysql_real_escape_string($_POST['regpass']); 
$regdbhost = $_POST['regdbhost']; 
$regdbuser = $_POST['regdbuser']; 
$regdbpass = $_POST['regdbpass']; 
$regdbname = $_POST['regdbname']; 
$regdbtable = $_POST['regdbtable']; 

$pass = crypt($pass,'$2a$09$anexamplestringforsalt$'); 
try { 
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); 
// set the PDO error mode to exception 
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

$sql = "UPDATE info SET regdbname='$regdbname' WHERE id='".$id."'"; 

// Prepare statement 
$stmt = $conn->prepare($sql); 

// execute the query 
$stmt->execute(); 

// echo a message to say the UPDATE succeeded 
echo $stmt->rowCount() . " records UPDATED successfully"; 
} 
catch(PDOException $e) 
{ 
echo $sql . "<br>" . $e->getMessage(); 
} 

$conn = null; 
?> 

而且它顯示了這個錯誤:

UPDATE info SET regdbname='test' WHERE id='' 
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'regdbname' in 'field list' 

我在做什麼錯?我的regdbname表存在於信息中。爲什麼說沒有找到regdbname?

我的壞是用戶,而不是信息

+4

仔細檢查你的列名可能拼寫錯誤 –

+1

發佈您的表結構 –

+0

並檢查$ dbname是否正確。 – Jens

回答

3

你有兩個問題:

1)你的表沒有列regdbname。請檢查列名是否正確,如果您拼錯了。

2)$id設置爲空白。你不在任何地方設置$id

+0

將鼠標懸停在鏈接上以查看是否生成了id。 – Pupil

+0

該評論是否意味着您正在將'register_globals'設置爲ON來運行?因此,期望'$ id'自動存在於你的腳本中? – RiggsFolly

+0

不,這意味着,用戶點擊某處的鏈接即可訪問此頁面。他可以在url中查看它。 – Pupil

1

更新後的記錄爲0.這是因爲您甚至沒有定義值爲$ id

您的查詢是這樣

UPDATE user SET regdbname='test' WHERE id='' 

所以搜索一個空的ID,它有沒有它沒有更新任何行並返回結果爲0。