php修改数据库记录,求大神

末日孤狼 2014-12-13 11:45:17
<?php
@mysql_connect("localhost", "root", "abc123456")
or die("数据库连接失败!");

@mysql_select_db("Mytest_db")
or die("数据库不存在或不可用!");

$wno = $_POST['warrantno'];
$wname = $_POST['warrantname'];
$wlevel = $_POST['warrantlevel'];

$query_update = @mysql_query("update employees set userlevel = $wlevel where serial_no = '$wno' and emp_name = '$wname'")
or die("SQL语句执行失败!");

if($query_update)
{
echo "修改成功!<br><br>";
}
else
echo "Sorry,修改失败!";
?>

这是一个很简单的测试代码,数据库Mytest_db中有如下一张表employees:

serial_no emp_name password role depart userlevel
12 James a1234 业务员 业务部 0
15 Kobi b1234 工程师 技术部 2

现在我随便取一组值,如
$wno=13, $wname="wang", $wlevel=1,上面那个$query_update总是为TRUE,实际上,很显然这是一个错误的值,为什么$query_update也为TRUE? 求解释
...全文
191 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
傲雪星枫 2014-12-20
  • 打赏
  • 举报
回复
mysql_query對於无效SQL的时候是返回FALSE,如果SQL查询结果为空(语句是有效的),仍然是会返回有效的ID。 所以判斷是否有更新不能這樣判斷。 應該使用mysql_affected_rows()判斷。 mysql_affected_rows() 函数返回前一次 MySQL 操作所影响的记录行数。 參考:http://www.w3school.com.cn/php/func_mysql_affected_rows.asp

$query_update = @mysql_query("update employees set userlevel = $wlevel where serial_no = '$wno' and emp_name = '$wname'")
    or die("SQL语句执行失败!");

$rc = mysql_affected_rows(); 

    if($rc)
    {
        echo "修改成功!<br><br>";
    }
    else
        echo "Sorry,修改失败!"; 
babala_2804225217 2014-12-20
  • 打赏
  • 举报
回复
PHP修改数据库信息示例 //显示数据库信息修改操作 <?php if($page){ $page_size=6; //每页显示2条记录 $query="select count(*) as total from tb_url where tb_url_id"; //从数据库中读取数据 $result=mysql_query($query); $message_count=mysql_result($result,0,"total"); //获取总的记录数 $page_count=ceil($message_count/$page_size); //获取总的页数 $offset=($page-1)*$page_size; $query=mysql_query("select * from tb_url where tb_url_id order by tb_url_id desc limit $offset, $page_size"); while($myrow=mysql_fetch_array($query)){ ?> <tr> <td height="25" align="center"><span class="STYLE1"><?php echo $myrow[tb_url_name];?></a></span></td> <td align="center"><span class="STYLE1"><?php echo $myrow[tb_url_dz];?></span></td> <td align="center"><span class="STYLE1"><?php echo $myrow[uptime];?></span></td> <td align="center"><a href="liulan_up_ok.php?tb_url_id=<?php echo $myrow[tb_url_id];?>" class="STYLE1">修改信息</a></td> <td align="center"><a href="delete_liulan_type.php?delete_id=<?php echo $myrow[tb_url_id];?>" class="STYLE1">删除会员</a></td> </tr> <?php }}?>//codego.net/tags/4/1/ //点击修改信息跳转页面处理修改信息功能 <?php $sql=mysql_query("select * from tb_url where tb_url_id='$_GET[tb_url_id]'"); while($myrow=mysql_fetch_array($sql)){ ?> <form action="up_liulan_up.php" method="post" enctype="multipart/form-data" name="form1" id="form1" onSubmit="return check_input(form1)"> <div id="up"> <div id="up1">友情连接修改</div> <div id="yonghum">连接地址:</div> <div id="tupmc">连接名称:</div> <div id="tupmc2"> <label> <input type="text" id="tb_url_name" name="tb_url_name" size="30" value="<?php echo $myrow[tb_url_name] ?>"> </label> </div> <div id="tupmc1"> <input name="tb_url_dz" id="tb_url_dz" type="text" size="30" value="<?php echo $myrow[tb_url_dz]; ?>"></div> <div id="anniu"> <input type="submit" name="submit" value="修改" /> <a href="index.php">返回</a> <label> </label> </a></div> </div> </form> <?php } ?>
ayayad 2014-12-17
  • 打赏
  • 举报
回复
这个也需要大神... 只是没有修改的记录而已,语句本身没问题自然不会返回false。 如果你一定要判断这种状态,建议获取修改的影响行数。
ghostwuboy 2014-12-13
  • 打赏
  • 举报
回复
你执行之后,把SQL语句打印出来,复制到数据库执行,就知道什么问题
末日孤狼 2014-12-13
  • 打赏
  • 举报
回复
$wno和$wname值随便取,即使与数据库中的serial_no和emp_name不匹配,竟然也提示修改成功,回到数据库命令行下查看,明显修改不成功的,为什么这里会提示修改成功(即$query_update返回TRUE)
一起混吧 2014-12-13
  • 打赏
  • 举报
回复
你应该仔细看看mysql_query() 返回值那一部分。
一起混吧 2014-12-13
  • 打赏
  • 举报
回复
引用
返回值 mysql_query() 仅对 SELECT,SHOW,EXPLAIN 或 DESCRIBE 语句返回一个资源标识符,如果查询执行不正确则返回 FALSE。 对于其它类型的 SQL 语句,mysql_query() 在执行成功时返回 TRUE,出错时返回 FALSE。 非 FALSE 的返回值意味着查询是合法的并能够被服务器执行。这并不说明任何有关影响到的或返回的行数。很有可能一条查询执行成功了但并未影响到或并未返回任何行。

21,893

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧