保留PHP脚本中的MySQL注释

spi*_*nt0 1 php mysql comments

我一直致力于一个项目,我一直在以交互方式开发MySQL命令.我现在想要使用PHP脚本运行MySQL命令.我通过简单地粘贴MySQL命令并将它们变成PHP字符串来实现这一点.像这样...

$queryStg = "
    update table1 set col1 = 1;

    drop table table2; 
    ";

$sqlQuery = mysqli_multi_query($mysqliLink, $queryStg);
Run Code Online (Sandbox Code Playgroud)

但是我总是不得不删除MySQL注释以使其工作.我宁愿保留这些评论.有没有办法做到这一点?.我已经尝试在每条评论的末尾添加'\n',但我无法让它发挥作用.例如,如果我运行它会返回错误...

$queryStg = "
    -- a mySQL comment
    update table1 set col1 = 1;

    --another comment
    drop table table2; 
    ";

$sqlQuery = mysqli_multi_query($mysqliLink, $queryStg);
Run Code Online (Sandbox Code Playgroud)

完整的代码使其有用

$mysqliLink = new mysqli ($host, $username, $password, $dbName);

$queryStg = "
    -- a mySQL comment
    update table1 set col1 = 1;

    --another comment
    drop table table2; 
    ";

$sqlQuery = mysqli_multi_query($mysqliLink, $queryStg);

do {
        if ( mysqli_error($mysqliLink) ) {
        die("ERROR: " .
            htmlspecialchars(mysqli_error($mysqliLink), ENT_QUOTES) .
            "<br>\n");
    }

    echo mysqli_affected_rows($mysqliLink);
    mysqli_use_result($mysqliLink);
    $moreResults = mysqli_more_results($mysqliLink);
    @mysqli_next_result($mysqliLink);
} while($moreResults);
Run Code Online (Sandbox Code Playgroud)

谢谢

And*_*ist 7

如果正确转义,将跳过评论EDIT(" - "后面跟空格字符,制表符,换行符等).试试这个:

$queryStg = "
-- a mySQL comment
update table1 set col1 = 1;

-- another comment
drop table table2; 
";

$sqlQuery = $mysqliLink->multi_query($queryStg);
Run Code Online (Sandbox Code Playgroud)

  • Raffael:这不公平,因为在OP的问题中已经提到$ mysqliLink,因此暗示OP已经知道如何创建它. (3认同)