该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
下面是一个完整的程序,意图是用表aa的数据对表bb进行更新,问题集中在最后四行,按编号顺序看注解的问题,`如有兴趣可亲自试试。
function makeTbl($name){
$sql="drop table if exists ".$name;
mysql_query($sql);
$sql="CREATE TABLE ".$name."(realName VARCHAR(20), sex char(1),idCard VARCHAR(20)) default charset=gbk";
mysql_query($sql);
}
maketbl("aa");
maketbl("bb");
$sql="insert into aa (realName,sex,idCard) values ('张三丰','男','123456')";
mysql_query($sql);
$sql="insert into bb (realName) values ('张三丰')";
mysql_query($sql); $sql="select * from aa ";
$query=mysql_query($sql);
while ($rs=mysql_fetch_array($query))
{
$flag=0;
$sql="UPDATE bb SET ";
if (!(!isset($rs['userName']) || empty($rs['userName'])))
{
$username="userName='".$rs['userName']."',";
$sql=$sql.$username;
$flag=1;
}
if (!(!isset($rs['sex']) || empty($rs['sex'])))
{
$sex="sex='".$rs['sex']."',";
$sql=$sql.$sex;
$flag=1;
}
if (!(!isset($rs['idCard']) || empty($rs['idCard'])))
{
$idCard="idCard='".$rs['idCard']."',";
$sql=$sql.$idCard;
$flag=1;
}
if ($flag==1){
$sql{strlen($sql)-1}='';
$sql=$sql." WHERE realName='".$rs['realName']."'"; // 1,这里完成sql语句的组合
//$sql="UPDATE bb SET sex='男',idCard='123456' WHERE realName='张三丰'"; 4,直接执行显示出来的语句,则表bb被更新。
mysql_query($sql); //2, 执行后,检查数据库,会发现表bb并未被更新
echo $sql; //3,把sql句显示出来
}
}