小编Pet*_*ley的帖子

PHP:如何确定循环的每个第N次迭代?

我希望通过XML发布每3个帖子后回显一个图像这里是我的代码:

<?php
// URL of the XML feed.
$feed = 'test.xml';
// How many items do we want to display?
//$display = 3;
// Check our XML file exists
if(!file_exists($feed)) {
  die('The XML file could not be found!');
}
// First, open the XML file.
$xml = simplexml_load_file($feed);
// Set the counter for counting how many items we've displayed.
$counter = 0;
// Start the loop to display each item.
foreach($xml->post as $post) {
  echo ' 
  <div style="float:left; width: 180px; …
Run Code Online (Sandbox Code Playgroud)

html php loops

52
推荐指数
4
解决办法
9万
查看次数

PHP和MySQL:mysqli_num_rows()期望参数1为mysqli_result,给定布尔值

我正在尝试集成HTML Purifier http://htmlpurifier.org/来过滤我的用户提交的数据,但我在下面收到以下错误.我想知道如何解决这个问题?

我收到以下错误.

on line 22: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given 
Run Code Online (Sandbox Code Playgroud)

第22行是.

if (mysqli_num_rows($dbc) == 0) {
Run Code Online (Sandbox Code Playgroud)

这是php代码.

if (isset($_POST['submitted'])) { // Handle the form.

    require_once '../../htmlpurifier/library/HTMLPurifier.auto.php';

    $config = HTMLPurifier_Config::createDefault();
    $config->set('Core.Encoding', 'UTF-8'); // replace with your encoding
    $config->set('HTML.Doctype', 'XHTML 1.0 Strict'); // replace with your doctype
    $purifier = new HTMLPurifier($config);


    $mysqli = mysqli_connect("localhost", "root", "", "sitename");
    $dbc = mysqli_query($mysqli,"SELECT users.*, profile.*
                                 FROM users 
                                 INNER JOIN contact_info ON contact_info.user_id = users.user_id 
                                 WHERE users.user_id=3");

    $about_me = …
Run Code Online (Sandbox Code Playgroud)

php mysql

41
推荐指数
2
解决办法
37万
查看次数

MySQL:视图与存储过程

由于MySQL开始支持存储过程,我从未真正使用过它们.部分是因为我不是一个伟大的查询作家,部分是因为我经常与为我做出这些选择的DBA合作,部分原因是因为我对我知道的事情很满意.

在进行数据选择方面,特别是在考虑一个基本上是去规范化(连接)和聚合(avg或max,子查询和计数等)数据选择的选择时,MySQL 5.x中的正确选择是什么?一个看法?还是存储过程?

我很满意的观点 - 你知道你的SELECT查询应该是什么样的,所以你只需要创建它,确保它被编入索引,然后只做一个CREATE VIEW [View] AS SELECT [...].然后,在我的应用程序中,我将视图视为只读表 - 它表示我的规范化数据的非规范化版本.

这里有什么缺点 - 如果有的话?如果我将完全相同的SELECT语句移动到存储过程中会有什么变化(收益或损失)?

我希望在谷歌搜索这个主题时找到一些很难找到的"引擎盖"信息,但我真的很欢迎所有的评论和答案.

mysql performance database-design stored-procedures views

30
推荐指数
4
解决办法
2万
查看次数

DOMElement克隆和追加:'错误的文档错误'

有些东西我不完全了解使用PHP的DOM api进行节点克隆.这是一个示例文件,可以快速复制我遇到的问题.

$doc  = new DOMDocument( '1.0', 'UTF-8' );
$root = $doc->createElement( 'root' ); // This doesn't work either $root = new DOMElement( 'root' );
$doc->appendChild( $root );

$doc2  = new DOMDocument( '1.0', 'UTF-8' );
$root2 = $doc2->createElement( 'root2' );
$doc2->appendChild( $root2 );

// Here comes the error
$root2->appendChild( $root->cloneNode() );
Run Code Online (Sandbox Code Playgroud)

当您运行此小片段时,会抛出异常

致命错误:未捕获的异常'DOMException',消息'Wrong Document Error'

我是否可以从文档中获取节点,克隆它,然后将其附加到另一个文档?

php xml dom domdocument

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

SVN的最佳网络前端?

我正在研究SVN存储库浏览器,鉴于有多少人(我从这里开始),这是一个令人厌烦的任务

"理想"系统会

  • 在Linux上运行
  • 易于使用,即使对于非开发人员类型也是如此
  • 看起来不错(有一个像样的皮肤)
  • 要么有内置的访问控制,要么用PHP编写,这样我就可以自己破解它,将它连接到类似LDAP服务器的东西上.

基本上,我正在研究使用SVN前端作为资产交付系统的想法给其他员工(想想客户经理,项目经理等),他们需要只读访问权限并且不具备技术意识,因此它需要易于使用/导航.而且我真的需要能够在每个文件夹的基础上设置读取权限 - 我们不能让每个人都拥有对整个存储库的完全读取权限.

svn version-control

24
推荐指数
5
解决办法
3万
查看次数

Symfony 2 - 多服务器配置

我们开始采用Symfony 2来处理工作中的项目,这很棒,但是我正在努力解决这个问题,我几乎已经完成了,但并不完全.

Symfony将环境的概念视为单个服务器上的单独运行时.这很棒,因为您可以在不同的前端控制器(Web)或使用env开关(cli)的情况下切换运行时间.

但是,我们的代码作为开发过程的一部分部署在许多服务器上.每个人都有一个本地VM,然后代码通过Integration,QA,Staging和最后的Production传播.

因此,我们的环境概念是服务器(虚拟或物理).以下是此自定义配置的目标

  1. 维护Symfony关于运行时环境切换的ootb功能
  2. 允许每服务器进行公共(即开发人员控制)配置
  3. 维护每个服务器的私有(即sysad控制)配置
  4. 适用于web和cli

这意味着我们不能100%依赖parameters.ini或任何静态命名的文件,因为开发人员需要控制每个服务器的配置,所有这些文件将在git中彼此相邻.

那么,是什么我喜欢做的就是这个.向parameters.ini添加一个新值,用于设置服务器环境.像这样的东西

应用程序/配置/ parameters.ini

[parameters]
    server="int"
Run Code Online (Sandbox Code Playgroud)

然后,在内核中,根据该值加载其他配置文件.例如,我喜欢这个工作,但它没有(因为容器在这一步还不存在)

应用程序/ AppKernel.php

public function registerContainerConfiguration(LoaderInterface $loader)
{
  $loader->load(__DIR__.'/config/config_'.$this->getEnvironment().'.yml');

  // Per-server config
  $server = $this->getContainer()->getParameter( 'server' );        
  if ( $server )
  {
    $loader->load(__DIR__.'/config/server/'.$server.'.yml');
  }
}
Run Code Online (Sandbox Code Playgroud)

这将允许使用像app/config/server/int.yml这样的文件,开发人员可以使用它来控制非私有(即不是parameters.ini)配置值.

感谢阅读,如果有什么问题让我知道.

编辑

澄清,我不能使用或依赖的东西

  • *来自用户个人资料或通过的环境变量export.为什么?集成,QA和暂存可能都在同一个框中
  • vhost配置中的任何内容(不适用于cli)
  • 一个静态命名的文件(即,名为server.ini的东西不起作用)

php configuration symfony

20
推荐指数
1
解决办法
7548
查看次数

如何使用Symfony表单和数据转换器实现测试隔离?

注意:这是Symfony <2.6但我认为无论版本如何,相同的整体问题都适用

首先,请考虑此表单类型,该表单类型旨在将一个或多个实体表示为隐藏字段(为简洁起见,省略了名称空间)

class HiddenEntityType extends AbstractType
{
    /**
     * @var EntityManager
     */
    protected $em;

    public function __construct(EntityManager $em)
    {
        $this->em = $em;
    }

    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        if ($options['multiple']) {
            $builder->addViewTransformer(
                new EntitiesToPrimaryKeysTransformer(
                    $this->em->getRepository($options['class']),
                    $options['get_pk_callback'],
                    $options['identifier']
                )
            );
        } else {
            $builder->addViewTransformer(
                new EntityToPrimaryKeyTransformer(
                    $this->em->getRepository($options['class']),
                    $options['get_pk_callback']
                )
            );
        }
    }

    /**
     * See class docblock for description of options
     *
     * {@inheritdoc}
     */
    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults(array(
            'get_pk_callback' => function($entity) {
                return $entity->getId(); …
Run Code Online (Sandbox Code Playgroud)

php unit-testing symfony-forms symfony

20
推荐指数
1
解决办法
474
查看次数

MySQL:使用FK错误创建表(错误150)

我用MySQL Workbench创建了一个模型,现在正尝试将它安装到mysql服务器上.

使用文件>导出>转发工程师SQL CREATE脚本...它为我输出一个很好的大文件,我要求的所有设置.我切换到MySQL GUI Tools(专门用于查询浏览器)并加载这个脚本(请注意,我将从另一个官方MySQL工具开始).但是,当我尝试实际执行此文件时,我反复得到相同的错误

SQLSTATE [HY000]:常规错误:1005无法创建表'./srs_dev/location.frm'(错误号:150)

"好的",我对自己说,位置表有问题.所以我查看输出文件中的定义.

SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';

-- -----------------------------------------------------
-- Table `state`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `state` ;

CREATE  TABLE IF NOT EXISTS `state` (
  `state_id` INT NOT NULL AUTO_INCREMENT ,
  `iso_3166_2_code` VARCHAR(2) NOT NULL ,
  `name` VARCHAR(60) NOT NULL ,
  PRIMARY KEY (`state_id`) )
ENGINE = InnoDB;

-- -----------------------------------------------------
-- Table `brand`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `brand` ; …
Run Code Online (Sandbox Code Playgroud)

mysql innodb foreign-keys mysql-error-1005

18
推荐指数
2
解决办法
4万
查看次数

刷新实体管理器时,Symfony2/Doctrine2抛出索引错误

这里涉及三个实体:Deployment,DeploymentStepDeploymentStatusLog.我将首先粘贴这些类的相关定义

SRC /我/包/实体/ Deployment.php

<?php

namespace My\Bundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\PersistentCollection;

/**
 * @ORM\Table(name="deployment")
 * @ORM\Entity()
 */
class Deployment
{
  /**
   * Status Log Entries for this deployment
   *
   * @var \Doctrine\ORM\PersistentCollection
   *
   * @ORM\OneToMany(targetEntity="DeploymentStatusLog", mappedBy="deployment", cascade={"persist","remove"})
   * @ORM\OrderBy({"created_at"="DESC"})
   */
  protected $status_logs;

  /**
   * @var \Doctrine\ORM\PersistentCollection
   *
   * @ORM\OneToMany(targetEntity="DeploymentStep", mappedBy="deployment", cascade={"persist","remove"})
   * @ORM\OrderBy({"sequence" = "ASC"})
   */
  protected $steps;

  public function __construct()
  {
    $this->status_logs     = new ArrayCollection();
    $this->steps           = new ArrayCollection(); …
Run Code Online (Sandbox Code Playgroud)

orm unit-of-work symfony doctrine-orm

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

PHP:__ toString()和json_encode()不能很好地融合在一起

我遇到了一个奇怪的问题,我不知道如何解决它.我有几个类都是JSON对象的PHP实现.这是'问题的一个例子

class A
{
    protected $a;

    public function __construct()
    {
        $this->a = array( new B, new B );
    }

    public function __toString()
    {
        return json_encode( $this->a );
    }
}

class B
{
    protected $b = array( 'foo' => 'bar' );

    public function __toString()
    {
        return json_encode( $this->b );
    }
}

$a = new A();

echo $a;
Run Code Online (Sandbox Code Playgroud)

这个输出是

[{},{}]
Run Code Online (Sandbox Code Playgroud)

所需的输出是

[{"foo":"bar"},{"foo":"bar"}]
Run Code Online (Sandbox Code Playgroud)

问题是我依靠__toString()钩子来为我做我的工作.但它不能,因为json_encode()使用的序列化不会调用__toString().遇到嵌套对象时,它只是序列化公共属性.

那么,问题就变成了这样:有没有办法可以开发一个JSON类的托管接口,它既可以让我使用setter和getter来获取属性,也可以让我获得我想要的JSON序列化行为?

如果这是不明确的,这里是一个实现的例子就不会工作,因为__set()钩子只要求初始分配

class a
{
    public function __set( $prop, $value )
    {
        echo __METHOD__, PHP_EOL; …
Run Code Online (Sandbox Code Playgroud)

php serialization json

11
推荐指数
1
解决办法
8495
查看次数