我在MySQL中有一个消息表,用于在用户之间记录消息.除了典型的id和消息类型(所有整数类型),我需要将实际的消息文本保存为VARCHAR或TEXT.我设置的前端限制为3000个字符,这意味着消息永远不会插入到数据库中,因为它比这更长.
是否有理由使用VARCHAR(3000)或TEXT?有一些关于编写VARCHAR(3000)的东西,感觉有点违反直觉.我已经浏览了Stack Overflow上的其他类似帖子,但是能够获得特定于此类公共消息存储的视图.
是否有一种简单的方法可以将一种日期格式转换为PHP中的另一种日期格式?
我有这个:
$old_date = date('y-m-d-h-i-s'); // works
$middle = strtotime($old_date); // returns bool(false)
$new_date = date('Y-m-d H:i:s', $middle); // returns 1970-01-01 00:00:00
Run Code Online (Sandbox Code Playgroud)
但我当然希望它能够返回当前的日期,而不是破解那天.我究竟做错了什么?
我面临以下问题,我不确定最佳做法是什么.
考虑下表(会变大):
id PK | giver_id FK | recipient_id FK | 日期
我正在使用InnoDB,根据我的理解,它会自动为两个外键列创建索引.但是,我还要做很多查询,我需要匹配以下特定组合:
SELECT...WHERE giver_id = x AND recipient_id = t
.
每个这样的组合在表中都是唯一的.
在这些列上添加两列索引是否有任何好处,或理论上两个单独的索引是否足够/相同?
我在PayPal的即时付款通知(IPN)和付款数据传输(PDT)之间选择时遇到了一些麻烦.
基本上,用户在我的网站上购买一次性产品,在PayPal上付款,然后返回我的网站.我理解IPN是如何工作的,但我现在看到我可以通过PDT更轻松地触发成功购买后发生的各种操作,因为数据会在那里返回然后(而不是需要单独的监听器) .
但是,PayPal的PDT文档包含了这条神秘的内容:"PDT并不适用于信用卡或快速结账交易." ......但我在这个主题上找不到任何进一步的内容.
信用卡真的不适合与PDT一起使用吗?我想要的不只是一句话.
这是否意味着用户必须拥有/创建PayPal帐户才能付款?
这是否意味着如果我想让用户直接用PayPal账户和/或信用卡付款,我必须实施IPN?
任何经历过这种情况的人都可以解决这些问题吗?
举一个简单的例子,我在页面上多次重复了以下块(它是动态生成的):
<div class="box">
<div class="something1"></div>
<div class="something2">
<a class="mylink">My link</a>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
点击后,我可以通过以下方式访问链接的父级:
$(".mylink").click(function() {
$(this).parents(".box").fadeOut("fast");
});
Run Code Online (Sandbox Code Playgroud)
但是......我需要找到<div class="something1">
那个特定的父母.
基本上,有人可以告诉我如何引用更高级别的兄弟而不能直接引用它吗?我们称之为大哥哥.直接引用大哥的类名会导致页面上该元素的每个实例淡出 - 这不是理想的效果.
我试过了:
parents(".box .something1") ... no luck.
parents(".box > .something1") ... no luck.
siblings() ... no luck.
Run Code Online (Sandbox Code Playgroud)
任何人?谢谢.
这可能是一个愚蠢的问题,但作为一个相对较新的PHP的人,我想知道在HTML模板代码中经常打开和关闭PHP标签是否存在与性能相关的问题,如果是这样,那么可能是最佳实践使用PHP标签?
我的问题不是关闭标签的重要性/正确性,或者关于哪种类型的代码比另一种更易读,而是关于文档如何被解析/执行以及它可能对性能产生什么影响.
为了说明,请考虑以下两个极端:
混合PHP和HTML标记:
<?php echo
'<tr>
<td>'.$variable1.'</td>
<td>'.$variable2.'</td>
<td>'.$variable3.'</td>
<td>'.$variable4.'</td>
<td>'.$variable5.'</td>
</tr>'
?>
// PHP tag opened once
Run Code Online (Sandbox Code Playgroud)
分离PHP和HTML标记:
<tr>
<td><?php echo $variable1 ?></td>
<td><?php echo $variable2 ?></td>
<td><?php echo $variable3 ?></td>
<td><?php echo $variable4 ?></td>
<td><?php echo $variable5 ?></td>
</tr>
// PHP tag opened five times
Run Code Online (Sandbox Code Playgroud)
有兴趣听到一些关于此的观点,即使只是听到它没有任何区别.
谢谢.
请有经验的PHP帮助以下人员.在我的代码中的某个地方,我在非实例化的类中调用了一个公共静态方法:
$result = myClassName::myFunctionName();
Run Code Online (Sandbox Code Playgroud)
但是,我希望有很多这样的类,并根据用户的语言动态确定正确的类名.换句话说,我有:
$language = 'EN';
Run Code Online (Sandbox Code Playgroud)
......我需要做一些事情:
$result = myClassName_EN::myFunctionName();
Run Code Online (Sandbox Code Playgroud)
我知道我可以将语言作为参数传递给函数并在一个公共类中处理它,但由于各种原因,我宁愿选择不同的解决方案.
这对任何人都有意义吗?谢谢.
一个没有经验的PHP问题:
我有一个PHP脚本文件,我需要在很多地方很多次包含在不同的页面上.
我可以选择将包含的文件分解为几个较小的文件,并根据需要包含这些文件......或者......我可以将它们整合在一个PHP文件中.
我想知道在这种情况下是否对include()使用更大的文件和更小的文件有什么性能影响?例如,200KB文件和20KB文件之间是否有任何性能差异?
谢谢.
我即将部署到生产相当复杂的站点,并且第一次需要一个临时环境,我可以在更真实的环境中测试事物,特别是对于一些无法在本地运行的外部服务.
我的总体计划是首先在本地开发和测试,将简单的更改(小错误修复,HTML/CSS,JS等)直接推送到生产,并且对于更大的更改,首先推送到暂存子域以进行全面测试然后再进行生产.
我不认为我需要保持暂存和生产数据库同步(偶尔手动更新会这样做)但我想知道是否有关于维护与生产环境相关的暂存环境的一般良好实践,特别是涉及数据库时.
任何一般的想法/建议/经验将不胜感激.
更新:
感谢您的评论,我得到了主旨.我想值得花点时间考虑一下.接受了流行的答案.
php ×5
performance ×3
database ×2
mysql ×2
class ×1
date ×1
datetime ×1
doctrine ×1
dynamic ×1
filesize ×1
format ×1
function ×1
html ×1
include ×1
indexing ×1
jquery ×1
listener ×1
messages ×1
orm ×1
parent ×1
payment ×1
paypal ×1
paypal-ipn ×1
paypal-pdt ×1
production ×1
propel ×1
siblings ×1
sql ×1
staging ×1
symfony1 ×1
tags ×1
templates ×1
text ×1
varchar ×1