我有一个名为'sess-start.php'的脚本,它位于我的httpdocs目录中的/ include目录中.
我的网站继续给出这个错误:\
[Fri Mar 25 14:52:24 2011] [错误] [客户端12.3.3.3] PHP致命错误:require()[function.require]:无法打开所需的'/includes/sess-start.php'(include_path =' .:')在第4行的/var/www/vhosts/site.com/httpdocs/page.php中,参考:https: //www.site.com/
尽管www.site.com/includes存在DOES.是什么赋予了!
这些包含/要求本身可能包含其他要求或包含声明.相对路径不会工作,所以请不要这样做.
我的.htaccess文件已经指向站点根目录的所有包含路径:
php_value include_path.:/ var/www/vhosts/site.com/httpdocs
并非所有的include或者必需的脚本都包含在一个目录中,因此建议简单地将/ includes目录放在include_path中也会被取消(反过来也会导致Windows机器出现问题)
也许对现实生活中的例子做一些澄清可能有助于解决我们团队试图解决的问题:
在一个页面上,用户可以输入多个选项,以下页面进行必要的计算,并根据这些计算将客户路由到许多可能的选项中,所有这些选项都会导致需要语句,如DB条目.
然后,在数据库条目(或其他一些操作)内,如果一切顺利,该成员可能已经选择之前根据他/她的行动接收电子邮件确认.此require语句位于第二个require(db insert)内,但与第二个目录位于不同的目录中,因此在第一个文件错误地处理链接时会导致冲突.
对绝对路径进行硬编码甚至每页设置适当的包含路径都是'ok'但是它会禁用我们团队使用Dreamweaver(或任何其他执行相同操作的程序)在文件之间进行热链接的能力,因为它无法识别'site root '在测试环境中运行时.
我已经搜索过PHP.net网站,最初想到了该list()功能的一些用途,但似乎没有完成目标:
我有一个未知数量的值存储在一个数组中
$array1 = array(1,2,3,4,5);
要么
$array1 = array(1,2,3);
我希望能够回显(或print_r)数组中包含的值来屏幕并仅用逗号和间距分隔.
例如:
'想法'是$array1要显示回声:
1,2,3
从上面的第二个例子.
我们假设我有以下字段:
'name sub _blah'
我可以使用TRIM()函数去除外部空间,但实际上我想在第一个空格(修剪后)之后删除所有内容.
所以:
'name sub _blah'会变成'名字'
我知道这在PHP中是可行的,但我试图在仅MySQL调用上做.有没有我不知道的功能呢?
谢谢!
我很抱歉,如果这只是询问MySQL表上的存储空间的另一种方式,例如: MySQL中的NULL(性能和存储)
但我的问题确实与最佳做法有关.
假设我有一个表格,可以在给定的时间点收集客户的所有"必要"信息.12个月在路上,我意识到我还喜欢捕捉人的出生日期和性别,如果他们希望提供它(场的数量是有些无关紧要,但理解它可以是一个或50个字段).
最佳做法是将新字段添加到现有表中,设置并允许所有初始值为NULL,然后使用新数据更新现有记录
要么
创建一个新表并根据主键的存在与主表建立关系?
我已经通过我的所有的CSS文件冲刷(也有很多他们)除了查看/删除我的jQuery的数据表的sDom设置插上,但由于某些原因,排序图标(向上和向下箭头)旁边的我文本位于文本下方,好像html
以某种方式输入.
有没有人曾经发生过这种事情?
注意:这个问题已于11/19/12重新定义,以供澄清.我通常在这里没有太多问题,但努力为客户端站点设计新的产品系统.我们提供一套产品,每个客户都可以向他的客户销售.我们可能会随时添加新产品,但它们都遵循以下格式:
使用之前的结构给出一个真实世界的例子:
上面的列表显然仍在继续,可以更大,更大,但它提供了整体的想法.
目前,我正在存储特定客户可以在单个平面格式表中销售的产品类型,如下所示:
ID | clientID | categoryID | typeID | productID | customURL
=============================================================
1 | 111 | 1 | 1 | 1 | 1111
2 | 111 | 1 | 2 | 2 | 2222
3 | 111 | 1 | 2 | 3 | 3333
4 | 111 | 2 | 3 | 4 …Run Code Online (Sandbox Code Playgroud) 我使用以下函数来解密我的服务器上的数据:
function decrypt($key, $text) {
return trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, base64_decode($text), MCRYPT_MODE_ECB, mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND)));
}
Run Code Online (Sandbox Code Playgroud)
我已经阅读了很多关于不使用ECB的内容(并且知道它已被弃用,所以想切换到CBC.只需将模式切换为:
function decrypt($key, $text) {
return trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, base64_decode($text), MCRYPT_MODE_CBC, mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC), MCRYPT_RAND)));
}
Run Code Online (Sandbox Code Playgroud)
但不起作用.不会生成错误,但返回的数据仍然是加密的.
我错过了什么?
$key = "hello";
$iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC), MCRYPT_DEV_RANDOM);
function encrypt($key, $text) {
return trim(base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $text, MCRYPT_MODE_CBC, $iv)));
}
function decrypt($key, $text) {
return trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, base64_decode($text), MCRYPT_MODE_CBC, $iv));
}
$text = 12345;
echo "Plain Number : " . $text . "<br><br>";
$encrypted = encrypt($key, $text);
echo …Run Code Online (Sandbox Code Playgroud) 我正在为我的一个项目使用Datatables jquery插件.特别是对于一个,列数可以根据消费者拥有多少个孩子而变化(是的,我意识到规范化和正确的技术会插入另一行,但这是客户要求).
数据表必须如此设置:
<table>
<thead>
<tr>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td></td>
</tr>
</tbody>
</table>
Run Code Online (Sandbox Code Playgroud)
我的脚本开头为:
<table cellpadding="0" cellspacing="0" border="0" class="display" id="sortable">
<thead>
<tr>
<th>parent name</th>
<th>parent phone</th>
<?php
try {
$db->beginTransaction();
$stmt = $db->prepare("SELECT max(num_deps) FROM (SELECT count(a.id) as num_deps FROM children a INNER JOIN parents b USING(id) WHERE a.id !=0 GROUP BY a.id) x");
$stmt->execute();
$rows = $stmt->fetchAll();
for($i=1; $i<=$rows[0][0]; $i++) {
echo "
<th>Child Name ".$i."</th>
<th>Date of Birth ".$i."</th>
";
}
$db->commit();
}
catch (PDOException $e) …Run Code Online (Sandbox Code Playgroud) 每个 MySQL表都应该有一个自动递增的主键(理想情况下是INT字段类型)吗?
@Raj More的答案看起来效率最高.但是,当我考虑它时,问题是这个自动递增的主键ID将如何与其他表相关联.例如:
ID | firstname | lastname | email
----------------------------------------
1 | john | doe | 1@email.com
2 | sarah | stow | 2@email.com
3 | mike | bro | 3@email.com
Run Code Online (Sandbox Code Playgroud)
ID | memberid | display | address
--------------------------------------------
1 | 1 | funtime zone | 123 street
2 | 3 | silly place llc | 944 villa dr
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,消费者可以访问该站点并选择注册免费产品/服务.如果消费者选择,他们可以提供额外的信息(存储在表2中)以进行额外的邮寄等.我看到的问题是这些表如何与"主键自动增量字段"相关.在表2中,'memberid'与表1的ID有关,但这并非"非常"清楚.放入表2的任何新信息将增加1,而并非所有消费者都会选择参与表2所需的数据.
要提取给定年份的一周,我们可以使用:
SELECT EXTRACT(WEEK FROM timestamp '2014-02-16 20:38:40');
Run Code Online (Sandbox Code Playgroud)
但是,我试图以一种奇怪的格式将几周组合在一起。我一周的开始将在周一凌晨 4 点开始,并在下周一凌晨 3:59:59 结束。
理想情况下,我想创建一个提供开始和结束日期的查询,然后按上面列出的周数对该期间的总销售额进行分组。
例子:
SELECT
(some custom week date),
SUM(sales)
FROM salesTable
WHERE
startDate BETWEEN 'DATE 1' AND 'DATE 2'
Run Code Online (Sandbox Code Playgroud)
我不打算更改EXTRACT()函数,而是创建一个查询,该查询将从以下示例表中提取并输出示例结果。
如果查询中的“DATE 1”是“2014-07-01”并且“DATE 2”是“2014-08-18”:
示例表:
itemID | timeSold | price
------------------------------------
1 | 2014-08-13 09:13:00 | 12.45
2 | 2014-08-15 12:33:00 | 20.00
3 | 2014-08-05 18:33:00 | 10.00
4 | 2014-07-31 04:00:00 | 30.00
Run Code Online (Sandbox Code Playgroud)
想要的结果:
weekBegin | priceTotal
----------------------------------
2014-07-28 04:00:00 | 30.00
2014-08-04 04:00:00 | 10.00 …Run Code Online (Sandbox Code Playgroud)