PHP引号和双引号不会显示数据

时间:2012-12-01 22:05:20

标签: php sql-server

我正在尝试在MSSQL中显示PHP中的文本字段,我已经阅读了大量的内容并且没有任何工作,select语句在MSSQL中工作,但是当我把它放在PHP中时它打破了PHP代码和页面将不会显示 所以继承我的问题我在mssql中有一个描述字段,将输出这样的数据

30" x 60" D/S Banner

Billboard 16 x 60 (17'H x 61'W)  3/3 Pockets

Barbara's Mesh Banner

所以当我显示一系列工作时 作业编号,数量和日期显示正常但描述不会显示任何内容 所以我尝试用

替换sql中的qutoes
replace( replace( convert(varchar(max), Description), '"', ''), '''', '') as Description

但是这打破了我的PHP页面并且没有显示任何内容,但在我的MSSQL qry中运行正常。 我已经尝试从PHP端使用str_replace无济于事。任何输入将不胜感激

PHP中的sql语句

$qry = odbc_exec($connection, "SELECT A.CompanyName, TH.OrderNumber, TD.ID AS PartNumber, TD.Description, TD.Quantity, TD.LineItemNumber,
TH.AccountID, TH.OrderCreatedDate, TH.SaleDate, TH.DueDate, InternalNotes, ProductionNotesTemplate
From TransHeader TH
    Join TransDetail TD
        ON TH.OrderNumber = TD.TransHeaderTransNumber
    LEFT JOIN Account A
        ON TH.AccountID = A.ID
WHERE  AccountNumber = '$AccountNumber' " );

在PHP中显示数组

while(odbc_fetch_array($qry)){

        $OrderNumber        = odbc_result($qry, "OrderNumber");

        $PartNumber         = odbc_result($qry, "PartNumber");

        $QTY            = odbc_result($qry, "Quantity");

        $InternalNotes      = odbc_result($qry, "InternalNotes");
        $Description        = odbc_result($qry, "Description");

        $DueDate        = odbc_result($qry, "DueDate");
        $LineItemNumber     = odbc_result($qry, "LineItemNumber");
        $ProductionNotes    = odbc_result($qry, 'ProductionNotesTemplate')

2 个答案:

答案 0 :(得分:0)

为什么不使用PDO并在查询中使用准备好的语句binding values,完全绕过整个引用转义问题?

要详细了解使用PDO的分步过程,Google是您的朋友。在快速浏览第一页的结果后,this tutorial似乎是最有希望的。

希望这有帮助!

答案 1 :(得分:0)

在您的代码中,没有理由认为应该发生这种情况。

由于引用,您的替换查询失败:尝试使用“here-document”语法来简化转义

$sql_code = <<<SQL_CODE

SELECT A.CompanyName,TH.OrderNumber,TD.ID AS PartNumber,TD.Description,TD.Quantity,TD.LineItemNumber,TH.AccountID,TH.OrderCreatedDate,TH.SaleDate,TH.DueDate,replace(replace(将(varchar(max),InternalNotes),''','in'),'\'','ft')转换为InternalNotes,ProductionNotesTemplate来自TransHeader TH加入TransDetail TD ON TH.OrderNumber = TD.TransHeaderTransNumber LEFT JOIN Account A ON TH.AccountID = A.ID WHERE AccountNumber ='$ AccountNumber'; SQL_CODE;

$qry = odbc_exec($connection, $sql_code);

但是之前的错误,即没有替换显示的事实被破坏,除非字段包含比引号更奇怪的东西,或者你不只是“输出”它(例如:如果你试图添加一个DOM实体通过生成HTML并将其放入Javascript代码,然后是,引号几乎肯定会破坏您的页面,并且可能根本不显示任何内容。即使仍未解释500错误)。< / p>

请尝试原始查询,但输出InternalNotes,如下所示:

<td><?php print HTMLEntities($InternalNotes); ?></td>

并查看该变量内部的内容。