gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 21:00:56 25 4
gpt4 key购买 nike

我试图从另一个 PHP 页面将某个“$_SESSION”变量的名称获取到 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
}

最佳答案

你好,deluxenathan

您收到的 SQL 错误是由于 session 变量值中的引号引起的$value5 = $_SESSION['SUBURB'];

如果您要打印/回显 $value5/$_SESSION['SUBURB']您将得到引用的实际文本,例如

'SEDGLEY PK DOG OFF LEASH AREA'

而不是

SEDGLEY PK DOG OFF LEASH AREA

快速解决方案是从 session 变量 $value5/$_SESSION['SUBURB'] 中删除引号或者来自类似的查询

$sql = "INSERT INTO dog_parks.reviews (review_text, username, date, rating, item)
VALUES ('$value1', '$value2', '$value3', '$value4', $value5)";

关于PHP $_SESSION 页面之间的变量错误 - mySQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37238574/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com