2012-09-22 43 views
-3

我试图更新everyting似乎是在查询正确的数据库记录,但查询不执行.... IM厌倦了这里的概率低于 是我的代码... .......所有的Mysql的更新查询不能

<table width="409"> 

     <tr> 
     <td><div align="right">Select Category</div></td> 
     <td><select name="cat"> 
     <option value="0">--Select a Category--</option> 

     <?php 
     $qry=mysql_query("Select * from categories"); 

    while($data=mysql_fetch_array($qry)) 
      { 
     echo "<option value=".$data['catid'].">".$data['catname']."</option>"; 

      } 
     ?> 


     </select></td> 
     </tr> 








     <tr> 
     <td width="148"><div align="right">Category Name</div></td> 
     <td width="142"><input type="text" name="cname" /></td> 
     </tr> 

     <tr> 
    <td><div align="right">Category Discription</div></td> 
    <td><input type="text" name="cdescp" /></td> 
     </tr> 

    <tr> 
    <td><div align="right">Category Status</div></td> 
    <td><input type="text" name="cstatus" /></td> 
    </tr>  
    <tr> 
    <td><div align="right"></div></td> 
    <td><input type="submit" name="addcat" value="Update Category" /> <input type="reset" /></td> 
    </tr> 
     </table> 

     </form> 
     <?php 

     if(isset($_POST['addcat'])) 
     { 
      $catid=$_POST['cat']; 
      echo $catid; 
      $cnamei=$_POST['cname']; 
      $cdescpr=$_POST['cdescp']; 
      $cstat=$_POST['cstatus']; 

    $sql=mysql_query("Update categories SET catname=$cnamei,catdescr=$cdescpr, catstat=$cstat where catid=$catid"); 

     echo $sql; 





      if($sql) 
      { 
      echo "<script>alert('Category Sucessfully Edited');</script>"; 
       } 



      } 

     ?> 
+1

脱离主题但重要;请注意'mysql_xxx()'函数已经过时。它们已被'mysqli_xxx()'funcs取代,并且PHP手册**强烈建议切换。旧的funcs很可能会被弃用,并会从未来版本的PHP中删除。 – Spudley

回答

1
$sql = mysql_query("UPDATE categories SET catname='".mysql_real_escape_string($cnamei)."',catdescr='".mysql_real_escape_string($cdescpr)."', catstat='".mysql_real_escape_string($cstat)."' where catid=".$catid) or die(mysql_error()); 
+0

嘿它的工作原理,你可以解释一下我这个解决方案是如何工作的,为什么我的查询是不工作..................... – hanzalah

+2

@hanzalah你必须用引号之间的字符串。 'catname = $ catname'应该是'catname ='$ catname''。 Ozerich还增加了'mysql_escape_string',这是安全的事情。 –

+0

非常感谢好友.............哎 – hanzalah

0

首先,你应该括在报价的SQL查询您的字符串变量。

假设$cnamei, $cdescpr, and $cstat是字符串和$catid是一个整数,查询就会像:

"Update categories SET catname='$cnamei',catdescr='$cdescpr', catstat='$cstat' where catid=$catid" 

不要使用mysql_*功能 - 它们已被弃用。改用MySQLi或PDO。

+0

我已经看到了PDO的一些教程,但其相当混乱...... u能为我提供的方便PDO教程的链接... ...... – hanzalah

+0

肯定.. [PDO](http://net.tutsplus.com/tutorials/php/php-database-access-are-you-doing-it-correctly/)这是在那里我学到PDO从..! –

+0

感谢好友............... – hanzalah