页面错误 - mySQL查询之间的PHP $ _SESSION变量

时间:2016-05-15 12:57:01

标签: php mysql

我想知道某个' $ _ SESSION'变量从另一个PHP页面进入SQL查询,我一直在收到错误..

方案是,如果我输入某个页面的评论,我希望该页面的名称进入数据库。 (参见下面的截图) 如果我提交评论,我想要名称' SEDGLEY PK ...'等存储在数据库中。

Scenario

我收到以下错误消息:(点击图片放大)
Error message

以下是页面代码:(enter_review.php)

$value1 = $_POST['review'];
$value2 = $_SESSION['id'];
$value3 = $date = date("Y-m-d");
$value4 = $_POST['rating'];
$value5 = $_SESSION['SUBURB'];
try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $sql = "INSERT INTO dog_parks.reviews (review_text, username, date, rating, item)           
    VALUES ('$value1', '$value2', '$value3', '$value4', '$value5')";
    // use exec() because no results are returned
    $conn->exec($sql);
    echo "Review Successful";
    }
catch(PDOException $e)
    {
    echo $sql . "<br>" . $e->getMessage();
    }

$conn = null;


header( "refresh:20; url=index.php" );
?>

我怀疑$ value5变量有些不对......

以下是输入评论页面的代码..

<?php
    if (isset($_GET['suburb']))
    {
         $_SESSION["SUBURB"] = $_GET['suburb']; ?>
         <!-- PRINTING DOG PARK NAME -->
            <h1><?php echo $_SESSION["SUBURB"]; ?></h1> 


            <table border="1" cellspacing="5" cellpadding="5" width="100%">
                <thead>
                    <tr>
                        <th>Park Name</th>
                        <th>Street</th>
                        <th>Suburb</th>
                        <th>Dog Park Area (m2)</th>
                    </tr>
                </thead>
                <tbody>
                <?php

                    $result = $conn->prepare("SELECT * FROM dog_parks.items where dog_park_name = $_SESSION[SUBURB]");
                    $result->execute();
                    for($i=0; $row = $result->fetch(); $i++){

                ?>

                    <tr>
                        <td><label><?php echo $row['Park_Name']; ?></label></td>
                        <td><label><?php echo $row['Street']; ?></label></td>
                        <td><label><?php echo $row['Suburb']; ?></label></td>
                        <td><label><?php echo $row['Dog_Park_Area_(m2)']; ?></label></td>

                    </tr>
                    <?php } ?>
                </tbody>
            </table>



            <?php
    }

3 个答案:

答案 0 :(得分:0)

由于单引号,PHP无法识别$ _SESSION ['id']。所以要么使用花括号{},要么使用单引号。

答案 1 :(得分:0)

hello deluxenathan

您获得的SQL错误是因为您的会话变量值中的引用 $ value5 = $ _SESSION ['SUBURB'];

如果你打印/ echo $ value5 / $ _ SESSION ['SUBURB'] 你会得到实际的文字,如

  

'SEDGLEY PK DOG OFF LEASH AREA'

而不是

  

SEDGLEY PK DOG OFF LEASH AREA

快速解决方案 从会话变量$ value5 / $ _ SESSION ['SUBURB']中删除引用 或者来自

之类的查询
  

$ sql =“INSERT INTO dog_parks.reviews(review_text,username,date,   评级,项目)
      VALUES('$ value1','$ value2','$ value3','$ value4',$ value5)“;

答案 2 :(得分:0)

我认为那应该是一个字符串。试试这个

$sql = "INSERT INTO dog_parks.reviews (review_text, username, date, rating, item)           
    VALUES (:review_text,:username,:date,:rating,:item)";
$conn->bindParam(':review_text', $value1, PDO::PARAM_STR);
$conn->bindParam(':username', $value2, PDO::PARAM_STR);
$conn->bindParam(':date', $value3, PDO::PARAM_STR);
$conn->bindParam(':rating', $value4, PDO::PARAM_STR);
$conn->bindParam(':item', $value5, PDO::PARAM_STR);