par
kevin254kl » 29 janv. 2019, 18:54
Bonjour à tous,
Pourriez vous m'aider?
J'ai une fonction qui permet de matcher dans ma base une date en la décomposant, avec différents paramètres ex '1 à 4 mois' '2 semaines' les paramètres aussi.
J'ai une fonction pour matcher avec un nombre de paramètre qui varie, qui va chercher en base de données, mais cela ne fonctionne pas
Code : Tout sélectionner
public function getIdTermDateWp(array $terms) : int
{
try
{
$db = $this->db;
$params = array($this->taxonomies['category']);
// USE SLUG
$sql = "SELECT te.term_id FROM pu_wp_term_taxonomy as ta
INNER JOIN pu_wp_terms as te ON ta.term_taxonomy_id = te.term_id
WHERE ta.taxonomy = ? && te.slug LIKE '%";
foreach($terms as $term)
{
$sql .= '?%';
array_push($params, $term);
}
$sql .= "'"; // close like parameters
$stmt = $db->prepare($sql);
$stmt->execute(array_values($params));
$row = $stmt->fetch();
echo '<pre style="background-color:black;color:white;">';var_dump($sql, $params, $row);echo '</pre>';die;
return (!empty($row['term_id'])) ? $row['term_id'] : 0;
}
catch(PDOException $e)
{
echo 'getIdTerm term:' . $terms . ' error ' . $e->getMessage();
return 0;
}
}
J'ai avec mon var_dump
Code : Tout sélectionner
string(175) "string(175) "SELECT te.term_id FROM pu_wp_term_taxonomy as ta
INNER JOIN pu_wp_terms as te ON ta.term_taxonomy_id = te.term_id
WHERE ta.taxonomy = ? && te.slug LIKE '%?%?%?%'"
array(4) {
[0]=>
string(16) "listing_category"
[1]=>
string(1) "1"
[2]=>
string(1) "4"
[3]=>
string(4) "mois"
}
bool(false)
Si je test dans phpmyadmin
Code : Tout sélectionner
SELECT te.term_id FROM pu_wp_term_taxonomy as ta INNER JOIN pu_wp_terms as te ON ta.term_taxonomy_id = te.term_id WHERE ta.taxonomy = 'listing_category' && te.slug LIKE '%1%4%mois%'
J'ai bien le bonne id retourné et pas d'erreur pdo.
Je pense que le problème vient des ?.
Auriez vous une piste?
Merci

Bonjour à tous,
Pourriez vous m'aider?
J'ai une fonction qui permet de matcher dans ma base une date en la décomposant, avec différents paramètres ex '1 à 4 mois' '2 semaines' les paramètres aussi.
J'ai une fonction pour matcher avec un nombre de paramètre qui varie, qui va chercher en base de données, mais cela ne fonctionne pas
[code] public function getIdTermDateWp(array $terms) : int
{
try
{
$db = $this->db;
$params = array($this->taxonomies['category']);
// USE SLUG
$sql = "SELECT te.term_id FROM pu_wp_term_taxonomy as ta
INNER JOIN pu_wp_terms as te ON ta.term_taxonomy_id = te.term_id
WHERE ta.taxonomy = ? && te.slug LIKE '%";
foreach($terms as $term)
{
$sql .= '?%';
array_push($params, $term);
}
$sql .= "'"; // close like parameters
$stmt = $db->prepare($sql);
$stmt->execute(array_values($params));
$row = $stmt->fetch();
echo '<pre style="background-color:black;color:white;">';var_dump($sql, $params, $row);echo '</pre>';die;
return (!empty($row['term_id'])) ? $row['term_id'] : 0;
}
catch(PDOException $e)
{
echo 'getIdTerm term:' . $terms . ' error ' . $e->getMessage();
return 0;
}
}[/code]
J'ai avec mon var_dump
[code]string(175) "string(175) "SELECT te.term_id FROM pu_wp_term_taxonomy as ta
INNER JOIN pu_wp_terms as te ON ta.term_taxonomy_id = te.term_id
WHERE ta.taxonomy = ? && te.slug LIKE '%?%?%?%'"
array(4) {
[0]=>
string(16) "listing_category"
[1]=>
string(1) "1"
[2]=>
string(1) "4"
[3]=>
string(4) "mois"
}
bool(false)[/code]
Si je test dans phpmyadmin
[code]SELECT te.term_id FROM pu_wp_term_taxonomy as ta INNER JOIN pu_wp_terms as te ON ta.term_taxonomy_id = te.term_id WHERE ta.taxonomy = 'listing_category' && te.slug LIKE '%1%4%mois%' [/code]
J'ai bien le bonne id retourné et pas d'erreur pdo.
Je pense que le problème vient des ?.
Auriez vous une piste?
Merci :)