2013-07-17 137 views
0

这是我的代码。在此代码中,当您使用PHP编辑和“更新”数据库中的数据时,它不会更改数据库或myphpadmin中的数据。看看下面的代码:为什么我不能使用PHP编辑/更新数据库?

<?php 
include("dataconn.php"); //connect to database with the external php. 

if($_SESSION["loggedin"]!="true") 
    header("location:admin_login.php"); 

$aid=$_SESSION["userid"]; 
$admin_info="select * from admin where AD_ID='".$aid."'"; 

    if(isset($_POST["savebtn"])) 
{ 
    $adname=$_POST["name"]; 
    $adaddress=$_POST["address"]; 
    $ademail=$_POST["email"]; 
    $adcontact=$_POST["contact"]; 

      mysql_query("update admin set AD_NAME='".$ad_name."',ADDRESS='".$adaddress."',EMAIL='".$ademail."',CONTACT_NUM='".$adcontact."' where AD_ID=$aid"); 

    header("location:profile.php"); 

} 

?> 

    <body> 

     <form name="edit" method="post" action=""> 
      <tr> 
       <th class="title">Name</th> 
       <td>:</td> 
       <th><input type="text" size="50" value="<?php echo $row["AD_NAME"]?>" name="name"/></th> 

      </tr> 

      <tr> 
       <th class="title">Address</th> 
       <td>:</td> 
       <th><input type="text" size="50" value="<?php echo $row["ADDRESS"];?>" name="address" /></th> 
      </tr> 
      <tr> 
       <th class="title">Email</th> 
       <td>:</td> 
       <th><input type="text" size="50" value="<?php echo $row["EMAIL"];?>" name="email"/></th> 
      </tr> 
      <tr> 
       <th class="title">Contact Number</th> 
       <td>:</td> 
       <th><input type="text" size="50" value="<?php echo $row["CONTACT_NUM"];?>" name="contact"></th> 
      </tr> 

     <table> 

     <span id="edit"><input type="submit" name="savebtn" value="SAVE/CHANGE"/></span> 
     </form> 


    </body> 
    </html> 

我试图解决这个问题无数次,但它仍然有同样的问题。你可以帮我吗?

+1

您是否收到错误消息?另外,查看准备好的语句,否则将会收到SQL注入攻击。 – Sablefoste

+2

你应该是存储和检查'mysql_query'或测试没有'mysql_error'。另外,使用'PDO'语句,直接从'$ _POST'接受值并将它们放入查询中是很危险的。 –

+0

使用mysql_error()检查是否有任何sql错误 –

回答

1

为了帮助finfing错误:

<?php 

echo $adname . '<br />'; 
echo $adaddress . '<br />'; 
echo $ademail . '<br />'; 
echo $adcontact . '<br />'; 

$result = mysql_query("update admin set AD_NAME='".$ad_name."',ADDRESS='".$adaddress."',EMAIL='".$ademail."',CONTACT_NUM='".$adcontact."' where AD_ID=$aid"); 

if (!$result) { 
    die('Invalid query: ' . mysql_error()); 
}else{ 
    //header("location:profile.php"); 
    echo "Success"; 
} 


?> 

并尝试更改您的代码PDO,这样的事情:

<?php 

if(isset($_POST["savebtn"])){ 

$adname=$_POST["name"]; 
$adaddress=$_POST["address"]; 
$ademail=$_POST["email"]; 
$adcontact=$_POST["contact"]; 

try { 
    $pdo = new PDO('mysql:host=localhost;dbname=someDatabase', $username, $password); 
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

    $stmt = $pdo->prepare('UPDATE admin SET AD_NAME=:adname ,ADDRESS = :adaddress , EMAIL = :ademail , CONTACT_NUM = :adcontact WHERE AD_ID = :aid'); 

    $stmt->execute(array(
    ':adname' => $adname, 
    ':adaddress' => $adaddress, 
    ':ademail' => $ademail, 
    ':adcontact' => $adcontact, 
    ':aid' => $aid 
)); 

    header("location:profile.php"); 

} catch(PDOException $e) { 
    echo 'Error: ' . $e->getMessage(); 
} 

} 

?> 
+0

它只是告诉我** $ adaddress“
‘ 回声$ ademail’
”。 回声$ adcontact。 '
';以及成功**和** $ adname。**缺少 – JCChan

+0

@JCChan HTML中的一个小细节,您需要修复您的表格结构,打开

标记,正确关闭
和您只需要 TITLE:​​ Sbml

1

尝试用下面列出的标签替换您当前的标签,可能会有所帮助。

<form name="edit" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> 
0

你一定要考虑迁移到库MySQLi或PDO的你的PHP MYSQL集成。至少应该使用至少某种形式的输入转义(即使用mysql_real_escape_string())。

关于它不工作,你真的需要让php/mysql告诉你它是什么错误; 像这样:

$result = mysql_query("update admin set AD_NAME='".$ad_name."',ADDRESS='".$adaddress."',EMAIL='".$ademail."',CONTACT_NUM='".$adcontact."' where AD_ID=$aid") or die("Error with query: ".$query."<br /> Error message: ".mysql_error()); 

不过话虽如此,真正能够帮助这将是有 有用 - 1错误消息 - 2表定义

尽管我猜测你问题可能在查询的WHERE子句中 - 试试它为“...其中AD_ID ='$ aid'”

+0

我试过了,很不幸没有显示错误信息,仍然是同样的问题。无论如何,谢谢 – JCChan

相关问题