最近在学习并使用PHP+MySQL开发,下面是一段代码,用于添加图书到数据库,检查了好几遍了,觉得没问题,但实际运行时,总是显示"Query:SELECT press_id,press_name FROM press WHERE press_name='$pr'"这句有问题,但我在MySQL上调试这条语句,没有问题.
请帮忙看看问题出在哪儿,感激不尽!
<!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" xml:lang="en" lang="en">
<head>
    <meta http-equiv="content-type" content="text/html;charset=iso-8859-1" />
    <title>添加图书</title>
</head>
<body>
<?php # 允许用户添加图书
 
    require_once('../../mysql_connect.php'); //连接数据库.
    
    //检查是否发送了表单
    if(isset($_POST['submitted'])){

        //检查图书名称框
if(!empty($_POST['name'])){
    $n=escape_data($_POST['name']);
}else{
    echo '<p><font color="red">请输入图书名称.</font></p>';
    $n=FALSE;
} //检查图像
if(is_uploaded_file($_FILE['image']['tmp_name'])){
    if(move_uploaded_file($_FILE['image']['tmp_name'],"../../uploads/{$_FILES['image']['name']}"))
    { // 移动文件.
echo '<p>文件已上载!</p>';
    }else{ // 不能移动文件.
echo '<p><font color="red">不能够移动文件.</font></p>';
$i=FALSE;
    }
    $i=$_FILES['image']['name'];
}else{
    $i=FALSE;
}       //检查图书作者
if(!empty($_POST['author'])){
    $ar=escape_data($_POST['author']);
    //在数据库author表中插入记录
            $query="INSERT INTO author(author_name) VALUES ('$ar')";
    $result=@mysql_query($query);
    if($result){ //成功插入记录
//查询该作者的主键
$query="SELECT author_id,author_name FROM author WHERE author_name='$ar'";
$result=@mysql_query($query);
if($result){ //查询成功
    //此处可以进一步编写代码,以确认该作者以前是否存在,若存在,则删除本次
    //然后以上一次的主健返回
    $row=mysql_fetch_array($result,MYSQL_ASSOC);
    $ar=(int) $row['author_id'];
}
    }
}else{
    echo '<p><font color="red">请输入图书作者名.</font></p>';
    $ar=FALSE;
}       //检查出版社框
if(!empty($_POST['press'])){
    $pr=escape_data($_POST['press']);
    //在数据库press表中插入记录
            $query="INSERT INTO press(press_name) VALUES ('$pr')";
    $result=@mysql_query($query);
    if($result){ //成功插入记录
//查询该出版社的主键
$query="SELECT press_id,press_name FROM press WHERE press_name='$pr'";
$result=@mysql_query($query);
if($result){ //查询成功
    //此处可以进一步编写代码,以确认该出版社以前是否存在,若存在,则删除本次
    //然后以上一次的主健返回
    $row=mysql_fetch_array($result,MYSQL_ASSOC);
    $pr=(int) $row['press_id'];
}
            }
}else{
    echo '<p><font color="red">请输入出版社名称.</font></p>';
    $pr=FALSE;
}       //检查图书简介框
if(!empty($_POST['description'])){
    $d=escape_data($_POST['description']);
}else{
    echo '<p><font color="red">请输入图书简介.</font></p>';
    $d=FALSE;
} //图书类别
if($_POST['category']>0){
    $c=(int) $_POST['category'];
} //分享人
if($_POST['user']>0){
    $u=(int) $_POST['user'];
}        $r=$_POST['recommend'];//此值暂时不用,留待以后只有管理员可用,数据库中默认为N        if($n && $i && $d && $c && $u){
    //在数据库bookinformation表中插入记录
    $query="INSERT INTO bookinformation(author_id,press_id,category_id,user_id,book_name,description,register_date,recommend,book_image,borrow_total,comment_total,borrow) VALUES ($ar,$pr,$c,$u,'$n','$d',NOW(),'N','$i',0,0,'N')";
    $result=@mysql_query($query);     if(mysql_affected_rows()==1) { //记录已添加
echo '<p>已经添加一本图书信息.</p>';
    }else{
echo '<p><font color="red">这本图书没有被添加到数据库中.</font></p>';
    }
}else{
    echo '<p><font color="red">请返回重试.</font></p>';
    echo '<p>' . mysql_error() . '<br />Query: ' . $query . '</p>';
} mysql_close(); //关闭数据库连接.
    }
    
?>
    <h2>添加图书</h2>
    <form enctype="multipart/form-data" action="add_book.php" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="524288" />
<fieldset><legend>添加图书与大家分享</legend>
        <p><b>图书名称:</b><input type="text" name="name" size="60" maxlength="60" /></p>
        <p><b>封面图像:</b><input type="file" name="image" /><small>文件名中不应该包含有空格和无效字符,并且应带有扩展名.</small></p>
        <p><b>图书作者:</b><input type="text" name="author" size="30" maxlength="30" /></p>
        <p><b>出 版 社:</b><input type="text" name="press" size="30" maxlength="30" /></p>
<p><b>图书分类:</b><select name="category"><option>选择图书类别</option>
    <?php //填充下拉菜单
                $query="SELECT category_id,category_name FROM category";
$result=@mysql_query($query);
while($row=mysql_fetch_array($result,MYSQL_NUM)){
    echo "<option value=\"$row[0]\">$row[1]</option>\n";
}
    ?>
        </select></p>
<p><b>图书简介:</b><textarea name="description" cols="40" rows="5">最好自已根据图书的内容撰写</textarea></p>
        <p><b>分 享 人:</b><select name="user"><option>选择分享人</option>
    <?php //填充下拉菜单
$query="SELECT user_id,user_name FROM user ORDER BY user_name ASC";
$result=@mysql_query($query);
while($row=mysql_fetch_array($result,MYSQL_NUM)){
    echo "<option value=\"$row[0]\">$row[1]</option>\n";
}
    ?>
        </select></p>
        <p><b>是否推荐:</b><input type="radio" name="recommend" value="Y" />推荐 <input type="radio" name="recommend" value="N" />不推荐</p>
        </fieldset>
<p><input type="submit" name="submit" value="添加图书" /></p>
<input type="hidden" name="submitted" value="TRUE" />
    </form>
</body>
</html>

解决方案 »

  1.   


    $query="SELECT press_id,press_name FROM press WHERE press_name='{$pr}'";
    echo $query; // 看看sql有没有问题
    $result=@mysql_query($query);
    $row=mysql_fetch_array($result,MYSQL_ASSOC);
    if($row)
    {
        $pr=(int) $row['press_id'];
    }
    else
    {
        echo '查询失败!!';
    }
      

  2.   

    谢谢回复!
    仍然显示SELECT press_id,press_name FROM press WHERE press_name='{$pr}'这句有问题.
    只是简单地显示:SELECT press_id,press_name FROM press WHERE press_name='OK'
      

  3.   

    echo $query;
    然后复制到数据库中执行试试
      

  4.   

    press_name='OK',这个字段在数据库里有数据吗?
    如果没有可能赋值不对。
      

  5.   

    就是在PHP中运行不成功,检查好多遍了,就是不成功,语法什么都似乎对,可原因在哪儿呢?
      

  6.   

    $_FILE['image']['tmp_name']错了,应该是
    $_FILES['image']['tmp_name'].唉!就因为这个小小的S,使我调试了一上午.得出的感慨是:如果程序老报1+1=2错,那肯定是其他地方存在错误,因为1+1=2是不会错的,但它反映出其它地方存在错误.