我试图让用户转到帖子详细信息页面。他们可以在搜索后找到这些图像。但我总是得到这个: 警告:非法字符串偏移' postID'在第106行的C:\ xampp \ htdocs \ eindwerk2 \ index.php中 警告:非法字符串偏移' postID'在第180行的C:\ xampp \ htdocs \ eindwerk2 \ index.php
这是php代码。搜索功能顺便说一下。 $_SESSION['KEYWORD'] = array();
$error = '';
//$allResults2 = array();
if (isset($_POST['Find'])) {
try {
$pdoConnect = new PDO("mysql:host=localhost;dbname=imdterest", "root", "");
} catch (Exception $exc) {
echo $exc->getMessage();
exit();
}
$postTags = $_POST['naam'];
//$pdoQuery = "SELECT * FROM posts INNER JOIN user ON posts.postUser = user WHERE postTags = :postTags";
$pdoQuery = "SELECT posts.postID, posts.postUser, posts.postImageUrl, posts.postDescription, user.firstname, user.lastname, user.userID FROM posts INNER
JOIN user ON posts.postUser=user.email WHERE postTags = :postTags;";
$pdoResult = $pdoConnect->prepare($pdoQuery);
$pdoExec = $pdoResult->execute(array(":postTags" => $postTags));
if(!empty($_POST)){
while ($row = $pdoResult->fetch(PDO::FETCH_ASSOC)) {
$_SESSION['KEYWORD'][] = $row['postImageUrl']['postID'];
//$poster = $row['postID'];
//$allResults2[] = $row['postUser'];
//echo $postTags;
}
}
else {
echo 'no';
}
if(count($_SESSION['KEYWORD']) === 0) {
$error = "Sorry no results!";
}
这是html
<div class="search">
<?php
foreach ($_SESSION['KEYWORD'] as $imageLink){
$postid = $imageLink['postID'];
echo '<a href=\'./pinSearch.php?postid=$postid\'><img src="' . $imageLink . '"></a>';
}
/*foreach ($allResults2 as $imageUser){
echo '$imageUser';
}*/
?>
<div class="searchError"><?php echo $error; ?></div>
</div>
答案 0 :(得分:1)
您的错误来自以下代码:
$_SESSION['KEYWORD'][] = $row['postImageUrl']['postID'];
这不是PHP中的合法语法。您可以使用以下内容重现它:
<?php
$test = array(
test1 => "Hello",
test2 => "hello2"
);
echo $test["test1"]["test2"];
?>
当您尝试执行此代码时,您会得到:
PHP警告:
中的非法字符串偏移'test2'
可悲的是,我不确定您尝试使用这行代码实现的目标。无论如何,你的SQL结果是一维数组。您的代码就像使用二维数组一样。您只能使用$row["postImageUrl"]
或$row["postID"]
您不能直接使用它们。
如果你对这条线的尝试描述得更好,我可以帮到你。但实际上我不知道你的想法是什么。