嵌套引号-PHP打印语句中Javascript警报语句中的SQL语句
我有两个文件,一个是主页文件,另一个是用于生成SQL create table语句的函数。我想做的是在单击按钮后显示一条警报语句,并显示SQL代码(这样您就可以按原样复制和粘贴它) 这就是我到目前为止所做的: 主文件打印语句: $master是从generate create table函数返回的字符串嵌套引号-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);\" >
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。