小编Tys*_*est的帖子

链接表是否需要无意义的主键字段?

我正在研究几个链接表,我开始思考(Danger Will Robinson,Danger)链接表的可能结构是什么,他们的专业人士和骗子是什么.

我想到了链接表的一些可能的限制:

传统的3柱模型

  • id - 自动编号的PRIMARY
  • table1fk - 外键
  • table2fk - 外键

在大多数书籍中,这是一个经典,"努夫说.

索引3列模型

  • id - 自动编号的PRIMARY
  • table1fk - 外键 INDEX ('table1fk')
  • table2fk - 外键 INDEX ('table2fk')

根据我自己的经验,您要查询的字段未在传统模型中编入索引.我发现索引外键字段确实提高了预期的性能.这不是一个重大改变,而是一个很好的优化调整.

复合键2列 ADD PRIMARY KEY ('table1fk' , 'table2fk')

  • table1fk - 外键
  • table2fk - 外键

有了这个,我使用复合键,以便table1中的记录只能链接到table2上的记录一次.因为密钥是复合的,所以我可以添加记录(1,1),(1,2),(2,2)而不会出现任何重复错误.

复合键2列选项的任何潜在问题?这可能会导致索引问题吗?表现受到了打击?有什么东西可以取消这个可能的选择吗?

sql database-design primary-key

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

在php 5.3之前伪造后期静态绑定

我需要一个继承的静态函数"call"来调用另一个被覆盖的静态函数"inner".我可以用后期静态绑定做到这一点,但我的主机还没有php5.3,所以我需要解决它.

class ClassA{
    static function call()
    {
        return self::inner();
    }

    static function inner(){
        return "Class A";
    }   
}

class ClassB extends ClassA{
    static function inner(){
        return "Class B";
    }
}

echo "<p>Class A = " . ClassA::call();
echo "<p>Class B = " . ClassB::call();
Run Code Online (Sandbox Code Playgroud)

我希望输出为:
A
类= A 类B类= B类

但它是什么:
A
类= A 类B类= A 类

我的直觉告诉我,我应该能够在call()中写一些东西,以便在调用"call()"时检测被引用的对象.因此,而不是self :: inner(),它会沿着calledclass :: inner()的方向发展.检测从原始方法调用调用的内部()的正确版本.

php oop static

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

session.gc_maxlifetime何时开始计数

在每个页面加载我运行session_start()以恢复当前会话.什么时候session.gc_maxlifetime开始计数?第一次session_start()被调用并且会话的cookie被设置了?或者计时器是否每次重启session_start()

随着session.gc_maxlifetime一套约24分钟的时候,在这个时间表的会话数据应该被垃圾收集

 1. 12:00:00 First page load, session_start(), session cookie created
 2. 12:10:00 page load, session_start() 
 3. 12:26:00 page load, session_start()
 4. 12:55:00 page load, session_start()
Run Code Online (Sandbox Code Playgroud)

如果计时器在第一页加载时启动,session_start()那么我预计它将在加载3上进行垃圾收集.但如果它每次都重置session_start(),那么它将在加载4之前收集.

我希望它是后者,因为那时我可以每隔几分钟做一次javascript心跳来调用运行的页面session_start().

如果它是前者,session.gc_maxlifetime从创建会话cookie开始计数我需要销毁/重新创建或重新生成_id来重置计数?

php session

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

没有预共享标识符一次验证用户的策略

我正在创建一个脚本,其中包含名称和电子邮件地址列表,并发送一封电子邮件邀请他们注册我们部门的安全网站.名称和电子邮件列表可在同一站点的公共页面上找到.我需要一种方法来为他们提供一个唯一的令牌,当他们按照电子邮件中的链接注册帐户时会识别他们.用户只会使用一次令牌,以创建帐户并设置其初始密码.

什么是生成令牌的最佳方法?存储在数据库中的随机字符串?从用户信息和一些盐生成的哈希?别的什么?我知道这种方法的安全性取决于个人电子邮件邀请的隐私,这是我理解的一点点.

javascript php hash web-applications

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

从PHP中的DOMElement获取特定的子标记

我正在浏览xml定义文件,我有一个DOMNodeList,我正在浏览.我需要提取可能在当前实体中或可能不在当前实体中的子标记的内容

<input id="name">
  <label>Full Name:</label>
  <required />
</input>
<input id="phone">
  <required />
</input>
<input id="email" />
Run Code Online (Sandbox Code Playgroud)

我需要更换????????????? 有一些东西,如果它存在,我会得到标签标签的内容.

码:

foreach($dom->getElementsByTagName('required') as $required){
  $curr = $required->parentNode;

  $label[$curr->getAttribute('id')] = ?????????????
}
Run Code Online (Sandbox Code Playgroud)

预期结果:

Array(
  ['name'] => "Full Name:"
  ['phone'] => 
)
Run Code Online (Sandbox Code Playgroud)

php xml dom

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

tinymce没有在菜单中给我bullist或numlist图标

我有一个包含多个textarea的页面,我正在转换为tinymce字段.

<script src='//cdn.tinymce.com/4/tinymce.min.js'></script>
<script>
    tinymce.init({
        selector: '.input-textarea',
        toolbar: 'bold italic | bullist numlist indent outdent',
        statusbar: false,
        menubar: false,
        browser_spellcheck: true,
        contextmenu: false
    });
</script>
Run Code Online (Sandbox Code Playgroud)

textareas都是类输入 - textarea,而tinymce编辑器正在加载jsut罚款.除了由于某种原因所有菜单按钮都显示除了bullist和numlist之外.我错过了什么吗?

tinymce

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

ODBC 链接表中突然开始出现写入冲突消息

我有一个 mySQL 数据库,用于跟踪我们的项目并驱动我们的网站显示其信息。为了便于更新数据库,我设置了一个使用 ODBC 连接 (MySQL ODBC 5.1) 来编辑数据的访问数据库。过去几个月一直运行良好,没有出现任何问题。

然而,昨晚用户(共 3 个)遇到了写入冲突错误。用户只能将更改复制到剪贴板或删除更改。因此,我认为 Access 数据库有问题,我创建了一个新的 Access 数据库,通过 ODBC 连接链接表,但问题仍然出现。我还删除并重新创建了 ODBC 连接,但没有效果。

那么我该去哪里呢?是什么导致这个问题现在突然出现,而不是我几个月前设置这个问题时?

  • 上周(+5 天)数据库服务器、数据库或 Access 数据库没有发生任何更改。
  • 我们已确保只有一个 Access 实例正在尝试影响数据库。
  • 所有表都有一个 PK 和一个时间戳列。
  • 我们没有使用任何表单,只是使用 Table 接口。
  • 服务器尚未更新,ODBC 连接也未更新。
  • 我们使用的是 Access 2007
  • 当我们尝试更新行时,服务器的错误日志中没有显示任何内容。

mysql ms-access odbc

4
推荐指数
1
解决办法
5505
查看次数

用于编写优秀PHP文档的资源

我正在准备一个工具来公开源.我想对那些使用它以及潜在贡献者的人进行详细记录.我已经在使用一些基本的docblock和一些对类变量的行注释.目前我正在使用doxygen,因为它集成到eclipse中,但我并不喜欢它.

我真正想做的是根据PHP的PDO类创建文档,记录类函数和给定的使用示例.我更喜欢代码中的文档.

您会建议我阅读哪些书籍,教程或代码示例,以便让我了解如何制作出色的文档.

php

4
推荐指数
1
解决办法
1505
查看次数

__autoload检测并包含接口

我在我的脚本中使用__autoload来根据需要包含类.我的脚本使用类名中的提示来查找包含它的文件.如果它在模型中结束,它在模型目录中,控制器在控制器目录中等.我开始实现接口,因此需要调整我的自动加载器.

理想情况下,创建对象时,自动装带器将确定对象的文件名,存储位置,并包含该文件.然后它将询问该类以实现它所接口的接口,然后自动包含这些文件.

就像是

function __autoload($classname){
    echo $classname;
    include ("classes/$classname.php");
    $interfaces = class_implements($classname,FALSE);
    foreach($interfaces as $name){
        if(!class_exists($name,FALSE)){
        include("interfaces/".$name."inter.php");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

除非我这样做,否则我会收到错误

无法在第11行的W:\ xampp\htdocs\test\auto.php中重新声明__autoload()(之前在W:\ xampp\htdocs\test\auto.php:5中声明)

是不是可以在__autoload()中执行此操作?我是否应该继续依赖命名约定来区分对象类型和存储位置?

php interface autoload implements

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

返回所有具有 id 属性集的节点的 xpath 查询

我可以做一个查询,返回一个节点的结果集,它们的 id 设置为我知道的值。但是我不知道如何获得所有明确设置了 id 的节点的结果集。

attributes dom xquery

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