loddarmattheus
Erfahrenes Mitglied
Hallo Jungs,
ich habe mal wieder ein kleines Problem in einem Script.
Und zwar übergebe ich per URL die Variable title an das Script: http://localhost/php_rest_myblog/api/post/read1.php?title=LTX_Technology Post Two
Die read1.php greift auf die Klasse post.php zurück und verarbeitet die Daten, unter anderem auch die GET Variable.
read1.php
Hier wird die Variable title an post.php weitergegeben:
$post->title = isset($_GET['title']) ? $_GET['title'] : die();
post.php
An der rot markierten Stelle ist das Problem. Ich kann hier nicht .... WHERE p.title LIKE "?%" schreiben. Ich gebe zu, das hier ist nicht mein Script und so richtig kenne ich mich mit prepared Statements nicht aus, aber ich wäre für jeden Tipp dankbar.
Ziel soll es sein, dass ich die GET Variable "title" so an die select-Abfrage weiterreichen kann, um mit dem Wildcardsymbol arbeiten zu können.
Danke vorab. Gruss loddar
ich habe mal wieder ein kleines Problem in einem Script.
Und zwar übergebe ich per URL die Variable title an das Script: http://localhost/php_rest_myblog/api/post/read1.php?title=LTX_Technology Post Two
Die read1.php greift auf die Klasse post.php zurück und verarbeitet die Daten, unter anderem auch die GET Variable.
read1.php
PHP:
<?php
// Headers
header('Access-Control-Allow-Origin: *');
header('Content-Type: application/json');
include_once '../../config/Database.php';
include_once '../../models/Post.php';
// Instantiate DB & connect
$database = new Database();
$db = $database->connect();
// Instantiate blog post object
$post = new Post($db);
// Get ID
$post->title = isset($_GET['title']) ? $_GET['title'] : die();
// Blog post query
$result = $post->read_title();
// Get row count
$num = $result->rowCount();
// Check if any posts
if($num > 0) {
// Post array
//$posts_arr = array();
$posts_arr['data'] = array(); //das array heisst dann data
while($row = $result->fetch(PDO::FETCH_ASSOC)) {
extract($row);
$post_item = array(
'id' => $id,
'title' => $title,
'body' => html_entity_decode($body),
'author' => $author,
'category_id' => $category_id,
'category_name' => $category_name
);
// Push to "data"
array_push($posts_arr['data'], $post_item);
// array_push($posts_arr['data'], $post_item);
}
// Turn to JSON & output
echo json_encode($posts_arr);
} else {
// No Posts
echo json_encode(
array('message' => 'No Posts Found')
);
}
Hier wird die Variable title an post.php weitergegeben:
$post->title = isset($_GET['title']) ? $_GET['title'] : die();
post.php
PHP:
<?php
class Post {
// DB stuff
private $conn;
private $table = 'posts';
// Post Properties
public $id;
public $category_id;
public $category_name;
public $title;
public $body;
public $author;
public $created_at;
// Constructor with DB
public function __construct($db) {
$this->conn = $db;
}
// Get Title Post
public function read_title() {
// Create query
$query = 'SELECT c.name as category_name, p.id, p.category_id, p.title, p.body, p.author, p.created_at
FROM ' . $this->table . ' p
LEFT JOIN
categories c ON p.category_id = c.id
WHERE
p.title LIKE ?
ORDER BY
p.created_at DESC';
// Prepare statement
$stmt = $this->conn->prepare($query);
// Bind ID
$stmt->bindParam(1, $this->title);
// Execute query
$stmt->execute();
return $stmt;
}
An der rot markierten Stelle ist das Problem. Ich kann hier nicht .... WHERE p.title LIKE "?%" schreiben. Ich gebe zu, das hier ist nicht mein Script und so richtig kenne ich mich mit prepared Statements nicht aus, aber ich wäre für jeden Tipp dankbar.
Ziel soll es sein, dass ich die GET Variable "title" so an die select-Abfrage weiterreichen kann, um mit dem Wildcardsymbol arbeiten zu können.
Danke vorab. Gruss loddar