Javascript 使用SQL查询中的PHP变量回显JS函数

Javascript 使用SQL查询中的PHP变量回显JS函数,javascript,php,mysql,sql,Javascript,Php,Mysql,Sql,我有存储在SQL表中的函数,需要在JS中使用。问题是,我还需要在这些函数中使用PHP变量 以下是: <?php $container='11'; $title='Header'; $function_text = <<<EOT $(function() { $('#container$container').parent('div').find('h3').html('$title'); }); EOT; echo $f

我有存储在SQL表中的函数,需要在JS中使用。问题是,我还需要在这些函数中使用PHP变量

以下是:

<?php
  $container='11';
  $title='Header';
  $function_text =
  <<<EOT
    $(function() {
      $('#container$container').parent('div').find('h3').html('$title');
    });
  EOT;
  echo $function_text;
?>
但是这个:

<?php
  $ID=1;
  $container='11';
  $title='Header';
  $article = $cls -> Query(sprintf('SELECT * from graphs WHERE ID="%s"', $ID));
  $function_text = $article[0]['function'];
  echo $function_text;
?>
如何将变量注入回显文本

  • 更改存储在数据库中的数据,使其使用格式占位符而不是对变量的引用:

    $(function() {
      $('#container$container').parent('div').find('h3').html('$title');
    });
    
    $(function() {
      $('#container%s').parent('div').find('h3').html('%s');
    });
    
  • 使用:

    $function\u text=sprintf($article[0]['function'],$container,$title);
    
  • 更改存储在数据库中的数据,使其使用格式占位符而不是对变量的引用:

    $(function() {
      $('#container$container').parent('div').find('h3').html('$title');
    });
    
    $(function() {
      $('#container%s').parent('div').find('h3').html('%s');
    });
    
  • 使用:

    $function\u text=sprintf($article[0]['function'],$container,$title);
    

  • 谢谢,这很有效,从技术上回答了我的问题,但它不适合我的需要。存储在SQL中的代码实际上要长得多。(它实际上用于修改d3js图形,并使用了20多个变量,因此所有的%s-s对编辑器来说都会非常混乱,并且会扼杀灵活性。)在接受您的回答之前,我想知道是否有其他方法,以及为什么简单的回显不起作用。@Konservin:编辑器可以使用参数交换(数字)准确确定每次事件所指的变量。“简单回音”不起作用,因为PHP只解析变量的字符串文字(并且在那个时,只解析双引号或heredoc文字);它不会在
    echo
    时解析变量字符串。另一种选择可能是简单地搜索/替换
    $container
    等,可能使用正则表达式,小心处理转义。使用
    eval()
    可以更直接地满足您的要求,但在现实世界中太危险了,无法容忍。谢谢您,这是可行的,从技术上回答了我的问题,但它并不适合我的需要。存储在SQL中的代码实际上要长得多。(它实际上用于修改d3js图形,并使用了20多个变量,因此所有的%s-s对编辑器来说都会非常混乱,并且会扼杀灵活性。)在接受您的回答之前,我想知道是否有其他方法,以及为什么简单的回显不起作用。@Konservin:编辑器可以使用参数交换(数字)准确确定每次事件所指的变量。“简单回音”不起作用,因为PHP只解析变量的字符串文字(并且在那个时,只解析双引号或heredoc文字);它不会在
    echo
    时解析变量字符串。另一种选择可能是简单地搜索/替换
    $container
    等,可能使用正则表达式,小心处理转义。使用
    eval()。