小编Typ*_*pel的帖子

Microsoft SQL Server Management Studio错误地重写了我的查询

我正在尝试在Microsoft SQL Server Management Studio 2008 R2中创建一个简单的视图。我尝试使用“ 视图”>“新视图”设计器,以及直接在查询生成器中键入CREATE VIEW命令,但是无论我如何创建,Studio都会扭曲我的查询。

这是源查询。请特别注意WHERE子句:

 SELECT RTRIM(Orders.ITEMNUMBER) AS ItemNumber, 
        Orders.Type, 
        Orders.Quantity, 
        Orders.OrderNumber, 
        OrderDetails.SaleDate, 
        OrderLineItems.ReturnType,
        OrderLineItems.Action,
        OrderLineItems.Restock,
        OrderLineItems.Return
 FROM Orders 
 INNER JOIN OrderDetails ON Orders.Type = OrderDetails.Type 
 AND Orders.OrderNumber = OrderDetails.OrderNumber 
 INNER JOIN OrderLineItems ON Orders.OrderNumber = OrderLineItems.OrderNumber
 WHERE (OrderLineItems.Type = 'INVOICE' AND Orders.Type='3') OR 
       (OrderLineItems.Type = 'RETURN' AND Orders.Type='4')
Run Code Online (Sandbox Code Playgroud)

但是,无论如何,SQL Server Management Studio都会使查询格式错误:

 SELECT RTRIM(Orders.ITEMNUMBER) AS ItemNumber, 
        Orders.Type, 
        Orders.Quantity, 
        Orders.OrderNumber, 
        OrderDetails.SaleDate, 
        OrderLineItems.ReturnType,
        OrderLineItems.Action,
        OrderLineItems.Restock,
        OrderLineItems.Return
 FROM Orders 
 INNER JOIN OrderDetails ON Orders.Type = OrderDetails.Type …
Run Code Online (Sandbox Code Playgroud)

sql sql-server ssms sql-server-2008

5
推荐指数
1
解决办法
1122
查看次数

PHP stmt准备失败但没有错误

我正在尝试准备一个mysqli查询,但它无声地失败而没有给出任何错误.

 $db_hostname  = "test.com";
 $db_database   = "dbname";
 $db_username  = "db_user";
 $db_password   = "password";
 $db = new mysqli($db_hostname,$db_username,$db_password,$db_database);

 $q = "INSERT INTO Members (`wp_users_ID`,`MemberID`,`Status`,`MiddleName`,`Nickname`,`Prefix`,`Suffix`,`HomeAddress`,`City`,`State`,`Zip`,`ExtendedZip`,`BadAddress`,`SpouseFirstName`,`SpouseMiddleName`,`HomePhone`,`CellPhone`,`WorkPhone`,`WorkPhoneExt`,`OfficePhone`,`OfficePhoneExt`,`Pager`,`Fax`,`Company`,`CompanyType`,`OfficeAddress`,`OfficeAddress2`,`OfficeCity`,`OfficeState`,`OfficeZip`,`OTYPECO`,`OSTAG`,`UPCODE`,`Region`,`Department`,`Classification`,`Retired`,`Industry`,`Comments`,`Officer`,`OfficerType`,`OfficerTitle`,`OUNIT`,`ReceiveEMagazine`,`CD`,`SD`,`AD`,`isOrganization`,`DEL`,`Dues`,`DataSource`) VALUES ((?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?));";
 $stmt = $db->prepare($q);
 if ( false === $stmt ) {
      echo "<pre>";
      print_r( $db );
      echo "</pre>";
      mysqli_report(MYSQLI_REPORT_ALL);
      echo mysqli_error();
      }
Run Code Online (Sandbox Code Playgroud)

实际显示任何内容的唯一部分是print_r($ db):

 mysqli Object
 (
      [affected_rows] => -1
      [client_info] => 5.1.73
      [client_version] => 50173
      [connect_errno] => 0
      [connect_error] => 
      [errno] => 0
      [error] => 
      [error_list] => Array
      (
      )
      [field_count] => 1
      [host_info] => …
Run Code Online (Sandbox Code Playgroud)

php mysqli prepared-statement prepare

5
推荐指数
1
解决办法
9519
查看次数

PHP readfile() 保留 mime-type

我正在尝试设置一个 PHP 脚本,它可以从实时 webroot 之外的文件夹中提取文件(针对经过验证的用户)。问题是,执行此操作时,即使我使用正确的“Content-Type”标头,文件也会下载为application/octet-stream. 如果用户稍后尝试重新上传下载的文件,这会产生安全隐患,因为即使它实际上是 pdf,它也会被检测为应用程序(我的应用程序只允许上传某些 mime 类型)。

这就是我用来将文件拉入浏览器的方法:

$secret_file = "../attach/1/test.pdf";

header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private", false);
header("Content-Type: ".mime_content_type($secret_file));
header("Content-Disposition: inline; filename=\"test.pdf\";");
header("Content-Transfer-Encoding: binary");
readfile($secret_file);
Run Code Online (Sandbox Code Playgroud)

有趣的是,如果我通过浏览器以这种方式下载文件并在 Linux 中查看其属性,它会显示为“application/pdf”。但是,如果我使用 PHPmime_content_type()函数检查同一文件,它会读取为application/octet-stream.

我确实确认以这种方式检查原始文件(在将其拉出之前readfile)将其显示为application/pdf.

有没有什么方法可以readfile()在不改变mime类型的情况下使用?或者,是否有更好的选择?

编辑

回答一下评论中的一些问题:

  1. Firefox 中的开发人员工具报告内联文件有一个Content-Type: application/pdf标头。
  2. 下载文件的 sha256sum 与原始文件不匹配。但是如何readfile()在不更改文件的情况下使用(或类似的)呢?

php mime-types

5
推荐指数
0
解决办法
1107
查看次数

如何在PHP cURL请求中将OData发送到RESTful API

我试图使用PHP将GET请求中的OData参数发送到RESTful API.对此服务的格式正确的OData请求如下所示:

https://myapi.org/endpoint?filter=family_name eq 'Doe'
Run Code Online (Sandbox Code Playgroud)

看起来我应该CURLOPT_URL在发送请求之前将这些变量附加到我的末尾,但API服务似乎没有收到OData.

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 100);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('OSDI-API-Token:xxxxxxxxxxxx'));
curl_setopt($ch, CURLOPT_URL, "https://myapi.org/endpoint?filter=family_name eq 'Doe'");
$response = curl_exec($ch);
curl_close($ch);

echo "<pre>";
print_r($response);
echo "</pre>";
Run Code Online (Sandbox Code Playgroud)

输出是NULL.考虑到具有相同标题和相同Odata URL的相同请求在API的浏览器中搜索并找到正确的数据,这似乎是一个奇怪的响应.

任何人都可以确认这是否是通过cURL请求发送OData参数的正确方法?

php api curl odata

3
推荐指数
1
解决办法
2662
查看次数