嵌套引号-PHP打印语句中Javascript警报语句中的SQL语句

嵌套引号-PHP打印语句中Javascript警报语句中的SQL语句,javascript,php,sql,syntax,quotes,Javascript,Php,Sql,Syntax,Quotes,我有两个文件,一个是主页文件,另一个是用于生成SQL create table语句的函数。我想做的是在单击按钮后显示一条警报语句,并显示SQL代码(这样您就可以按原样复制和粘贴它) 这就是我到目前为止所做的: 主文件打印语句: $master是从generate create table函数返回的字符串 print "<input type=\"button\" value=\"Generate Create Table\" onclick=\"alert($master);\" >

我有两个文件,一个是主页文件,另一个是用于生成SQL create table语句的函数。我想做的是在单击按钮后显示一条警报语句,并显示SQL代码(这样您就可以按原样复制和粘贴它)

这就是我到目前为止所做的:

主文件打印语句:

$master是从generate create table函数返回的字符串

print "<input type=\"button\" value=\"Generate Create Table\" onclick=\"alert($master);\" >";
print”“;
生成创建表函数

<?php
    function generateCreateTable($resArr, $schema, $name, $type) {
      $strMaster = "";

      $strMaster .= "\"if not exists (select 1 from information_schema.tables where table_schema=    ";
      $strMaster .= "'$schema' and table_name='$name' and TABLE_TYPE='$type')\n";
      $strMaster .= "CREATE TABLE [$schema].[$name] (\n\"";
      return $strMaster;
   }
?>

AFAIK,警报弹出窗口通常不可选择,这意味着您无法轻松从中复制。您需要在警报开始时使用单引号,如
警报(“$master”)
并删除
\“
$strMaster
的开头和结尾。然后需要使用反斜杠转义所有引用的整个
$strMaster
。PHP有这样一个函数:
addslashes
@。然后,还需要在其上使用
htmlentities
,以便双引号转义HTML属性引号。总的来说,我认为像这样内联点击事件是个坏主意。除了$master之外,我添加了单引号,删除了\“在$strMaster的开头和结尾,在返回时添加了addSlaster,其中$strMaster作为参数,并在返回时添加了htmlentities,其中参数是addSlaster中的字符串。单击该按钮时,我得到SyntaxError:unterminated string literal。一切看起来都很顺利,所以我还是不知道问题出在哪里。你可能是对的,这是个坏主意。我希望这是一个快速的事情,这样我就可以工作的发电机,并有一个更持久的解决方案以后。谢谢你的回复!哦,你需要提供一个特殊的标志,以便转义单引号。尝试类似于
addslashes(htmlentities($strMaster,ENT_QUOTES | ENT_HTML401))
。如果仍然存在问题,则应使用浏览器的视图源来检查生成的html。