<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>号码套餐变更</title>
</head><?php
function modifyPackage($phoneNum, $newPackNum)
{
$con = mysql_connect("localhost", "root", "");
if(!$con)
{
echo "<script language=\"JavaScript\">
 alert('数据库连接失败!');  
 </script>";
echo "<script language='javascript' type='text/javascript'>";
echo "window.location.href='$url'";
echo "</script>";
return;
}
$result = mysql_select_db ("teleservice",$con);
if(!$result)
{
echo "<script language=\"JavaScript\">
 alert('选择数据库失败!');  
 </script>";
echo "<script language='javascript' type='text/javascript'>";
echo "window.location.href='$url'";
echo "</script>";
return;
}
$result = mysql_query("SET NAMES 'GBK'");
if(!$result)
{
echo "<script language=\"JavaScript\">
 alert('设置字符集失败!');  
 </script>";
echo "<script language='javascript' type='text/javascript'>";
echo "window.location.href='$url'";
echo "</script>";
return;
}
$query = "update selection
  set packNum = $newPackNum
  where selection.phoneNum = $phoneNum";////////???
$result = mysql_query($query, $con);
if($result) 
{
echo "<script language=\"JavaScript\">
 alert('号码套餐修改成功!');  
 </script>";
echo "<script language='javascript' type='text/javascript'>";
echo "window.location.href='$url'";
echo "</script>";
} else {
echo "<script language=\"JavaScript\">
 alert('号码套餐修改失败!');  
 </script>";
echo "<script language='javascript' type='text/javascript'>";
echo "window.location.href='$url'";
echo "</script>";
}

mysql_close($con);
}
modifyPackage("15801116820", "01");
?> 
<body>
</body>
</html>问题:经过调试,确定问题就是发生在$result = mysql_query($query, $con);这里。我把语句直接拿到phpMyAdmin中去执行,"15801116820"和"01"都用双引号,就可以成功,说明问题应该是在这个query中。我觉得原因可能是不是如下:
1、是不是双引号被转义了?如果是这个原因,那要怎么修改?
2、是不是字符集的设置有问题?(但是我觉得应该不是这个问题,我用中文、英文、数字都试过,都无法执行成功)
3、如果都不是,那请各位知道的帮忙一下哈!
感激不尽!

解决方案 »

  1.   

    你遇到什么问题?不能更新? 
      $result = mysql_query($query, $con) or die(mysql_error()); //这样报错了没有
      

  2.   

    $query = "update selection
                  set packNum = '$newPackNum'
                  where selection.phoneNum = '$phoneNum'";
      

  3.   

    sql中写变量应该引用的,加一个{}也可以,'{$newPackNum}'
      

  4.   

    字符类型的字段的值一定要用单引号括起,没有什么理由,这是约定
    内容中出现的单双引号,如果会出现歧义,就要转义
    什么样子会出现歧义呢?
    不如我们用单引号将字符串括起 'ab'cd' 这时bc之间的单引号就出现歧义了:可以认为是字符串ab结束了,也可以认为就是个撇号。所以要转义,写作 'ab\'cd'
    双引号中也是如此 "ab\"cd"