相同字符串值中的两个 bindParam

Two bindParam in same string values

提前抱歉我的英语。

我有一个带有 PDO bindParam 的 'problem'。


$sql_fact_1 = "INSERT INTO factures_interventions (id_client, id_facture, id_cat, detail_intervention, prix_intervention, date_intervention, etat_intervention)
VALUES (:id_client, '0', '3', 'Renouvellement automatique annuel (:date_fin) du compte :compte', :tarif, :date_actuelle, '0' )";

$req = $bdd->prepare($sql_fact_1);

$req->bindParam('id_client', $client_1['id'], PDO::PARAM_INT);
$req->bindParam('date_fin', $dateRenou, PDO::PARAM_STR);
$req->bindParam('compte', $compte_1['compte'], PDO::PARAM_STR);
$req->bindParam('tarif', $resultat_form_1['tarif'], PDO::PARAM_STR);
$req->bindParam('date_actuelle', $date, PDO::PARAM_STR);

$req->execute();
$req->closeCursor();

问题在这里

'Renouvellement automatique annuel (:date_fin) du compte :compte'

是我试图在一个短语中输入两个绑定但我得到一个错误:

致命错误:未捕获的 PDOException:SQLSTATE[HY093]:参数编号无效:绑定变量的数量与标记的数量不匹配

'Renouvellement automatique annuel (':date_fin') du compte ':compte''

就像那样,它有效,但我在我的行中有引用。 :(

喜欢:

Renouvellement automatique annuel ('2022/09/01') du compte 'moncompte.fr'

如何删除引号?

带引号的字符串中不能有参数。你必须建立你的字符串并插入:

$sql_fact_1 = "INSERT INTO factures_interventions (id_client, id_facture, id_cat, detail_intervention, prix_intervention, date_intervention, etat_intervention)
VALUES (:id_client, '0', '3', :renouvellement, :tarif, :date_actuelle, '0' )";

$renouvellement = "Renouvellement automatique annuel ($dateRenou) du compte ".$compte_1['compte'];
$req = $bdd->prepare($sql_fact_1);

$req->bindParam('id_client', $client_1['id'], PDO::PARAM_INT);
$req->bindParam('renouvellement', $renouvellement, PDO::PARAM_STR);
$req->bindParam('tarif', $resultat_form_1['tarif'], PDO::PARAM_STR);
$req->bindParam('date_actuelle', $date, PDO::PARAM_STR);