小编dan*_*oon的帖子

如何使用Zend DB执行MySQL IN子句?

我正在尝试获取使用Zend Framework 1.11的整数数组中的行.

$this->dbSelect
         ->from($table_prefix . 'product_link')
         ->joinLeft($table_prefix . 'product_link_name', $table_prefix . 'product_link.product_link_name_ref_id = ' . $table_prefix . 'product_link_name.product_link_name_id')
         ->where('product_ref_id IN (?)', implode(', ', $product_ids));
Run Code Online (Sandbox Code Playgroud)

当我使用__toString()方法时$this->dbSelect,我得到了

SELECT `phc_distrib_product_link`.*,
     `phc_distrib_product_link_name`.* 
FROM `phc_distrib_product_link` 
LEFT JOIN `phc_distrib_product_link_name` 
ON phc_distrib_product_link.product_link_name_ref_id = phc_distrib_product_link_name.product_link_name_id 
WHERE (product_ref_id IN ('10, 12'))
Run Code Online (Sandbox Code Playgroud)

这只返回满足product_ref_id = 10条件的行.如何获得IN子句

product_ref_id IN ('10', '12')
Run Code Online (Sandbox Code Playgroud)

要么

product_ref_id IN (10, 12)
Run Code Online (Sandbox Code Playgroud)

使用Zend DB预处理语句,以便我可以获取产品id数组中包含的所有行?

mysql zend-framework escaping prepared-statement

8
推荐指数
1
解决办法
5483
查看次数

Angular cli 构建不包含 css 组件

阅读 angular-cli 文档和有关堆栈溢出的一些讨论,我了解到,当使用生成的组件完成项目时,默认情况下内联样式将全部包含在构建中,但是当我构建项目时,似乎没有一个包括内联样式。
例如这个组件:

成分

import { MenubarService } from '../../services/menubar-service/menubar.service'
 
@Component({
    selector: 'app-login',
    templateUrl: './login.component.html',
    styleUrls: ['./login.component.css'],
    providers:[LoginService]
})
export class LoginComponent implements OnInit {
    constructor(.......
Run Code Online (Sandbox Code Playgroud)

最终项目中不存在 login.component.css 文件。我注意到它有两个原因:
首先,我的应用程序的样式显然与我使用“ngserve”命令时的样式不同,其次是因为使用浏览器检查器元素,我找不到 css 的痕迹。
这是我的 angular-cli 的配置文件

{
  "project": {
  "version": "1.0.0-beta.18",
  "name": "genioimprese"
},
"apps": [
    {
      "root": "src",
      "outDir": "dist",
      "assets": [
        "images",
        "assets",
        "favicon.ico"
      ],
      "index": "index.html",
      "main": "main.ts",
      "test": "test.ts",
      "tsconfig": "tsconfig.json",
      "prefix": "app",
      "mobile": false,
      "styles": [
        "styles.css",
        "paper.css"
      ],
      "scripts": [],
      "environments": {
        "source": "environments/environment.ts", …
Run Code Online (Sandbox Code Playgroud)

angular-cli angular

8
推荐指数
1
解决办法
5040
查看次数

PHP支持数组解构吗?

我的意思是这样的:

$arr = ["1", "2", "3"];

$one;
$two;
$three;

$new = [$one, $two, $three] = $arr; 
Run Code Online (Sandbox Code Playgroud)

结果我应该得到:

$one = 1;
$two = 2;
$three = 3;
Run Code Online (Sandbox Code Playgroud)

我试过,它适用于PHP 7.3.2:

var_dump($one); // returns 1
Run Code Online (Sandbox Code Playgroud)

php

8
推荐指数
1
解决办法
220
查看次数

使用 Python asyncio 从同步函数中运行并等待异步函数

在我的代码中,我有一个带有属性的类,偶尔需要运行异步代码。有时我需要从异步函数访问属性,有时从同步函数访问属性 - 这就是为什么我不希望我的属性是异步的。此外,我的印象是异步属性通常是一种代码异味。如果我错了纠正我。

我在从同步属性执行异步方法并阻止进一步执行直到异步方法完成时遇到问题。

这是一个示例代码:

import asyncio


async def main():
    print('entering main')
    synchronous_property()
    print('exiting main')


def synchronous_property():
    print('entering synchronous_property')
    loop = asyncio.get_event_loop()
    try:
        # this will raise an exception, so I catch it and ignore
        loop.run_until_complete(asynchronous())
    except RuntimeError:
        pass
    print('exiting synchronous_property')


async def asynchronous():
    print('entering asynchronous')
    print('exiting asynchronous')


asyncio.run(main())
Run Code Online (Sandbox Code Playgroud)

它的输出:

entering main
entering synchronous_property
exiting synchronous_property
exiting main
entering asynchronous
exiting asynchronous
Run Code Online (Sandbox Code Playgroud)

首先,RuntimeError捕获似乎是错误的,但如果我不这样做,我会得到RuntimeError: This event loop is already running例外。

其次,asynchronous()函数最后执行,同步完成后。我想通过异步方法对数据集进行一些处理,所以我需要等待它完成。如果我await asyncio.sleep(0)在调用之后添加synchronous_property() …

asynchronous python-3.x python-asyncio

8
推荐指数
2
解决办法
1万
查看次数

如何删除Magento中下拉属性的初始空值?

我正在使用Magento 1.5.1.0版.我添加了一个属性,并在"属性"选项卡中选择了以下选项:

Catalog input type for store owner: dropdown
Unique value: no
Values required: no
Run Code Online (Sandbox Code Playgroud)

然后我转到Manage Label/Options选项卡并添加了3个不同的选项,选择第一个选项作为默认选项.我将它添加到属性集中,当我输入产品时,我会看到下拉列表,但前面有一个空的选项值:

<select>
<option selected="selected"></option>
<option>Option 1</option>
<option>Option 2</option>
<option>Option 3</option>
</select>
Run Code Online (Sandbox Code Playgroud)

保存产品时,空选项仍保持选中状态.如何删除该空选项并使选项1成为我所有现有产品的默认选项,而无需使用JS或编辑任何文件?

attributes default magento option drop-down-menu

6
推荐指数
1
解决办法
2223
查看次数

多个curl请求,什么时候关闭句柄?

我对curlinit()close()函数感到困惑。我想知道在以下每种情况下何时应该关闭curl 句柄:
1. 使用单个句柄获取“单个”URL,并具有不同的选项。例如:

$curl=curl_init('google.com');
curl_setopt($curl,CURLOPT_FOLLOWLOCATION,true);
curl_exec($curl);
Run Code Online (Sandbox Code Playgroud)

现在我想将 FOLLOWLOCATION 设置为 false。我应该做curl_close($curl),并从头开始做所有事情,或者只是设置选项并再次执行它,如下所示:

curl_setopt($curl,CURLOPT_FOLLOWLOCATION,false);
curl_exec($curl);
Run Code Online (Sandbox Code Playgroud)

2.使用单个句柄获取“多个”URL。例如:

$curl = curl_init('google.com');
curl_exec($curl);
Run Code Online (Sandbox Code Playgroud)

现在我想要访问 stackoverflow.com。我应该关闭句柄并从头开始,还是可以设置另一个 URL 而不关闭句柄。像这样:

$curl = curl_init('stackoverflow.com');
curl_exec($curl);
Run Code Online (Sandbox Code Playgroud)

3.使用多个句柄获取多个URL。这是我的代码:

$CONNECTIONS=10;
$urls=fopen('urls.txt','r');
while(!feof($urls))
{
   $curl_array=array();
   $curl=curl_multi_init();
   for($i=0;$i<$CONNECTIONS&&!feof($urls);$i++)             
            //create 10 connections unless we have reached end of file
   {
        $url=fgets($urls);                    //get next url from file
        $curl_array[$i]=curl_init($url);      
        curl_multi_add_handle($curl,$curl_array[$i]);
   }
   $running=NULL;
   do
   {
       curl_multi_exec($curl,$running);
   }while($running>0);
   for($i=0;$i<$CONNECTIONS;$i++)    
   {
       $response=curl_multi_getcontent($curl_array[$i]);
       curl_multi_remove_handle($curl,$curl_array[$i]);
       curl_close(($curl_array[$i]));
   }
   curl_multi_close($curl);
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的:获取每个单个句柄的内容后,我将从多句柄中删除该句柄,关闭单个句柄,然后在 for 循环后关闭多句柄。这种做法是否正确,还是我过度闭合了手柄?
谢谢

php curl

6
推荐指数
1
解决办法
4540
查看次数

如果目录不存在,如何从nginx中的URL中删除尾部斜杠?

我正在使用PHP-FastCGI在nginx 1.4.1上运行服务器.目前我进行了设置,以便从我的URL中删除尾部斜杠并发出301重定向.但是,当我访问存在的目录时,我被迫进入重定向循环.我当前的文档根看起来像这样:

- index.php (app)
- webgrind
    - index.php
- static 
    - css
Run Code Online (Sandbox Code Playgroud)

目前我无法访问example.com/webgrind或任何其他目录.我的访问日志重复读取类似于:

GET /webgrind/ HTTP/1.1" 301 178 "-"
GET /webgrind  HTTP/1.1" 301 178 "-"
Run Code Online (Sandbox Code Playgroud)

这是我的nginx.conf中的服务器块:

server {
        listen 80;
        server_name example.com;

        location / {
            try_files $uri $uri/ /index.php?$args;
            root /var/www/example/public;
            index  index.php index.html index.htm;
        }

        rewrite ^/(.*)/$ /$1 permanent;

        location = /favicon.ico {
            access_log     off;
            log_not_found  off;
        }

        location ~ \.php$ {
            try_files $uri $uri/ /index.php?$args;
            root /var/www/example/public;
            index index.php index.html index.htm;

            fastcgi_pass   unix:/var/run/php5-fpm.sock;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME …
Run Code Online (Sandbox Code Playgroud)

configuration redirect nginx trailing-slash

6
推荐指数
1
解决办法
1万
查看次数

如何在 PHP 中获取不存在文件的规范化路径(真实路径)?

脚本文件

$filename = realpath(sprintf("%s/%s", getcwd(), $argv[1]));
var_dump($filename);
Run Code Online (Sandbox Code Playgroud)

让我们尝试一些事情

[/foo/bar/bof] $ php script.php ../foo.txt
string(16) "/foo/bar/foo.txt"

[/foo/bar/bof] $ php script.php ../nonexistent.txt
bool(false)
Run Code Online (Sandbox Code Playgroud)

该死!realpath返回 false 因为文件不存在。

我想看到的../nonexistent.txt

string(24) "/foo/bar/nonexistent.txt"
Run Code Online (Sandbox Code Playgroud)

如何获取 PHP 中任何相对路径的规范化路径?

注意:我看到了一些有关解析符号链接路径的问题。这些问题的答案不适用于我的问题。

php path realpath canonicalization

6
推荐指数
1
解决办法
3457
查看次数

使用Chrome开发者工具获取Favicon

当我尝试点击我的测试网页时,出现503错误.

在浏览器选项卡中,与我的页面关联的图标.但是,当我使用Chrome开发者工具时,我看不出该图像是如何显示的.

我在点击页面之前清除了缓存.此外,我查看了HTML和网络选项卡,但没有看到如何检索文件.

http google-chrome-devtools

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

将元素作为第一个参数传递给JavaScript中的事件处理程序的最简单方法是什么?

我知道this在事件处理函数中将值更改为接收事件的元素非常有用.但是,我想让我的函数始终在我的应用程序上下文中调用,而不是在元素上下文中调用.这样,我可以将它们用作事件处理程序以及其他方式,例如setTimeout调用.

所以,这样的代码:

window.app = (function () {
    var that = {
        millerTime: function () {},
        changeEl: function (el) {
            el = el || this;
            // rest of code...
            that.millerTime();
        }
    };
    return that;
}());
Run Code Online (Sandbox Code Playgroud)

可能就像这样:

window.app = (function () {
    return {
        millerTime: function () {},
        changeEl: function (el) {
            // rest of code...
            this.millerTime();
        }
    };
}());
Run Code Online (Sandbox Code Playgroud)

第一种方式让我感到困惑.是否有一个很好的简单方法将接收事件的元素作为第一个参数(最好是jQuery包装元素)传递给我的事件处理函数并在上下文中调用app?假设我使用jQuery绑定了一堆事件处理程序.我不想一直包含匿名函数:

$('body').on('click', function (event) {
    app.changeEl.call(app, $(this), event);  // would be nice to get event too …
Run Code Online (Sandbox Code Playgroud)

javascript jquery bind this event-handling

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