gpt4 book ai didi

php - fatal error : Uncaught exception 'PDOException' : Invalid parameter number: parameter was not defined' on the execution of my $params array

转载 作者:行者123 更新时间:2023-11-29 10:50:03 25 4
gpt4 key购买 nike

我在连接文件中的这一行收到此错误:

$语句->执行($params);

这是我的连接文件(顺便说一句,我知道我的凭据是什么,我只是不想显示它),

<?php
class connect
{

private static function db()
{
$pdo = new PDO('mysql:host=127.0.0.1;dbname=mysql;charset = utf8', 'username','password');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $pdo;
}
public static function query($query,$params = array())
{

$statement = self :: db()->prepare($query);
$statement->execute($params);
if(explode(' ',$query)[0] == 'SELECT')
{
$data = $statement->fetchAll();
return $data;
}
}
}

?>

但是问题源于此调用,

connect::query('INSERT INTO dry_posts VALUES (null, :postbody, NOW(), 0, \'\')', array(':postimg'=>$postimg));

这是我通过 imgur api 上传和显示图像的文件(这不是完整的文件)。

<?php 
include("connect.php");
include("check.php");
//include("image.php");

$postbody = "";
$posts = "";
$postimg = "";


if (isset($_POST['post'])) {

if ($_FILES['postimg']['size'] == 0)
{
$postbody = $_POST['postbody'];
$loggedInUserId = check::isLoggedIn();
if (strlen($postbody) > 160 || strlen($postbody) < 1)
{
die('Incorrect length!');
}

connect::query('INSERT INTO dry_posts VALUES (null, :postbody, NOW(), 0,:postimg)', array(':postbody'=>$postbody));

// Post::createPost($_POST['postbody']);

}
else {

$url = 'https://api.imgur.com/3/image'; // API endpoints, info: https://api.imgur.com/endpoints/image#image-upload
$client_id = '72316d91aac85c7'; // Get client_id here: https://api.imgur.com/#registerapp

$fh = fopen($_FILES['postimg']['tmp_name'], 'r');
$read = fread($fh, $_FILES['postimg']['size']);
fclose($fh);
$post = array(
'image' => base64_encode($read)
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Client-ID '.$client_id
));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$json = curl_exec($ch); // Response, info: https://api.imgur.com/#responses
curl_close($ch);
// $image = json_decode($json, true); // Array
$image = json_decode($json); // Object
// var_dump($image);
//$postimg = $image['data']['link']; // Array-style
$postimg = $image->data->link; // Object-style


// Insert $postimg to database?
//connect::query('INSERT INTO dry_posts VALUES (null, :postbody, NOW(), 0, \'\')', array(':postimg'=>$postimg));
connect::query('INSERT INTO dry_posts VALUES (null, :postbody, NOW(), 0, :postimg)', array(':postimg'=>$postimg));
//connect::query("UPDATE posts SET postimg=:postimg WHERE id=:postid", array(':postid' => $postid, ':postimg' => $postimg));
}


}

if (isset($_GET['postid']))
{
//Post::likePost($_GET['postid']);

if (!connect::query('SELECT post_id FROM post_likes WHERE post_id=:postid', array(':postid'=>$_GET['postid'])))
{
connect::query('UPDATE dry_posts SET likes=likes+1 WHERE id=:postid', array(':postid'=>$_GET['postid']));
connect::query('INSERT INTO post_likes VALUES (null, :postid)', array(':postid'=>$_GET['postid']));
}
else
{
connect::query('UPDATE dry_posts SET likes=likes-1 WHERE id=:postid', array(':postid'=>$_GET['postid']));
connect::query('DELETE FROM post_likes WHERE post_id=:postid', array(':postid'=>$_GET['postid']));
}

//Post::likePost($_GET['postid']);
}

// $posts = Post::displayPosts();

//title is body or whereclause, search_results is posts or $paramsarray, results is paramsarray


$dbposts = connect::query('SELECT * FROM dry_posts ORDER BY id DESC');
$posts = "";
//if(isset($_POST['postimg'])){
foreach($dbposts as $p){
if (!connect::query('SELECT post_id FROM post_likes WHERE post_id=:postid', array(':postid'=>$p['id']))) {
$posts .="<img src='".$p['postimg']."'>".htmlspecialchars($p['body'])."
<form action='try.php?postid=".$p['id']."' method='post'>
<input type='submit' name='like' value='Like'>
<span>".$p['likes']." likes</span>
</form>
<hr /></br />
";

} else {
$posts .="<img src='".$p['postimg']."'>".htmlspecialchars($p['body'])."
<form action='try.php?postid=".$p['id']."' method='post'>
<input type='submit' name='unlike' value='Unlike'>
<span>".$p['likes']." likes</span>
</form>
<hr /></br />
";
}
}


?>

connect::query('SELECT body FROM dry_posts WHERE body LIKE :body '.$whereclause.'', $paramsarray);

我确信我在连接文件中接受参数的方式没有任何问题,因为它在我传递 $postbody 数组时起作用,所以 postimg 的定义方式有问题吗?我错过了什么? postimg 是此表单的输入变量

<form action="try.php" class = "forum" method="post" enctype="multipart/form-data">
<textarea name="postbody" rows="4" cols="60" class = "text"></textarea>
<br />Upload an image:
<input type="file" name="postimg">
<input type="submit" name="post" value="Post">
<input type="submit" value="Upload">
</form>

最佳答案

connect::query('
INSERT
INTO dry_posts
VALUES (
null,
:postbody, <-- you name your placeholder :postbody
NOW(),
0,
\'\'
)
', array(
':postimg' => $postimg <-- you're trying to fill a placeholder named :postimg
));

更改您的查询以使用 :postimg 作为占位符,或更改您的数组以尝试填充 :postbody 占位符。

关于php - fatal error : Uncaught exception 'PDOException' : Invalid parameter number: parameter was not defined' on the execution of my $params array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43902527/

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