我想知道以下内容:
我打算在我的(例如 - PHP)应用程序中使用它,但不想对数据库运行多个查询,我有什么选项可以从单个查询中的多个表中获取数据?
注意:我正在写这篇文章,因为我希望能够链接到我在PHP队列中经常遇到的众多问题的精心编写的指南,因此我可以在发布答案时链接到此以获取更多详细信息.
答案涵盖以下内容:
我正在做一个INSERT ... ON DUPLICATE KEY UPDATE但是我需要更新部分是有条件的,只有在某些额外条件发生变化时才进行更新.
但是,WHERE不允许这样做UPDATE.这有什么解决方法吗?
我不能组合INSERT/UPDATE/SELECT,因为这需要在复制上工作.
在wordpress中,它会调用header.php,然后调用任何模板名称或请求的页面.如何在我的php标头中声明一个变量,然后我可以在其他模板中引用它?
我是网站的新手,我需要你们的帮助.以下是我可以在此站点http://sqlfiddle.com/#!3/134c3中运行的架构.我的数据库名称是车辆检查.我的问题是在这个架构之后.
CREATE TABLE Car
([CarID] varchar(36),
[PlateNo] varchar(6),
[Package] int);
INSERT INTO Car([CarID], [PlateNo], [Package])
VALUES('A57D4151-BD49-4B44-AF10-000F1C298E05', '8112AG', 4);
CREATE TABLE Event
([EventID] int,
[CarID] varchar(36),
[EventTime] smalldatetime,
TicketStatus varchar (10)) ;
INSERT INTO Event([EventID], [CarID], [EventTime], TicketStatus)
VALUES (1, 'A57D4151-BD49-4B44-AF10-000F1C298E05', '20130701', 'Open'),
(2, 'A57D4151-BD49-4B44-AF10-000F1C298E05', '20130702', 'Close') ;
CREATE TABLE EventDefects
([EventDefectsID] int,
[EventID] int,
[Status] varchar(15),
[DefectID] int) ;
INSERT INTO EventDefects ([EventDefectsID], [EventID], [Status], [DefectID])
VALUES (1, 1, 'YES', 1),
(2, 1, 'NO', 2),
(3, 1, 'N/A', …Run Code Online (Sandbox Code Playgroud) 根据哪些元素包含迭代器与细节元素,多维数组结构中的最佳实践是什么?
我的大部分编程经验(我主要是为了好玩而做)来自谷歌的以下教程,所以如果这似乎是一个特别愚蠢的问题,我提前道歉 - 但我确实想开始改进我的代码.
每当我需要创建一个多维数组时,我的命名总是将计数器放在第一个元素中.
例如,如果我有一个单维数组,如下所示:
$myArray['year']=2012;
$myArray['month']='July';
$myArray['measure']=3;
// and so on.
Run Code Online (Sandbox Code Playgroud)
但是,如果我想让相同的数组保留一些历史所有者,我会添加另一个维度并将其格式化如下:
$myArray[$owner]['year']=2012;
$myArray[$owner]['month']='July';
$myArray[$owner]['measure']=3;
Run Code Online (Sandbox Code Playgroud)
编辑:为了确保我的示例不是正确的方向或引导,我基本上遵循这个结构:
$myArray[rowOfData][columnOfData]
Run Code Online (Sandbox Code Playgroud)
现在,我的问题是关于公认的惯例.我应该做以下吗?
$myArray['year'][$owner]=2012;
$myArray['month'][$owner]='July';
$myArray['measure'][$owner]=3;
Run Code Online (Sandbox Code Playgroud)
编辑:使用上面的编辑,它应该是:
$myArray[columnOfData][rowOfData]
Run Code Online (Sandbox Code Playgroud)
我已经搜索过有关数组命名约定的内容,但是仍在讨论是否将数组命名为复数的文章.我一直在命名它们的方式似乎更合乎逻辑,我认为它遵循一个更好地类似于一个对象的结构,object->secondaryLevel->detail但是据我所知,我一直都在做这个问题.随着我越来越多地参与编程,如果他们错了,我宁愿改变我的习惯.
是否有可接受的标准,或者只是阵列的任何内容?如果您正在查看其他人编写的代码,那么期望的格式是什么?我知道任何有意义/直观的结构都是可以接受的.
从迭代的角度来看,以下哪一项更直观?:
for($i=0;$i<$someNumber;$i++)
{
echo $myArray[$i]['year'];
// OR
echo $myArray['year'][$owner];
}
Run Code Online (Sandbox Code Playgroud)
编辑:我确实把这篇文章标记为c#和Java,因为我想在PHP程序员之外得到一些意见.我认为,由于数组被用于许多不同的语言,所以从各种语言的程序员那里得到一些输入会很好.
就在两天前,以下代码用于从谷歌获取搜索查询:
$refer = parse_url($_SERVER['HTTP_REFERER']);
$host = parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST);
$query = parse_url($_SERVER['HTTP_REFERER'], PHP_URL_QUERY);
if(strstr($host,'www.google.com'))
{
//do google stuff
$qstart = strpos($query, 'q=') +2;
$qend = strpos($query, '&', $qstart);
$qlength = $qend - $qstart;
$querystring = substr($query, $qstart, $qlength);
$querystring = str_replace('q=','',$querystring);
$keywords = explode('%20',$querystring);
$keywords = implode(' ', $keywords);
return $keywords;
}
Run Code Online (Sandbox Code Playgroud)
但是,现在却没有.我通过使用echo($ query)对其进行了测试,看来google进程引用查询请求的方式已经改变.以前$查询包括在内
"q=term1%20term2%20term3%20...
但是,现在,当$ query被回显时,我得到以下输出:
sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0CCsQFjAB&url=http%3A%2F%2Fexample.com%2F&ei=vDA-UNnxHuOjyAHlloGYCA&usg=AFQjCNEvzNXHULR0OvoPMPSWxIlB9-fmpg&sig2=iPinsBaCFuhCLGFf0JHAsQ
Run Code Online (Sandbox Code Playgroud)
有办法解决这个问题吗?
假设我想'StackOverflow'在所有声明的变量中搜索一个值window.我可以用这段代码做到:
function globalSearch(obj, value) {
for(var p in obj)
if(obj[p] == value)
return(p);
}
globalSearch(window, 'StackOverflow');
Run Code Online (Sandbox Code Playgroud)
此代码将返回具有此值的变量的名称(或不返回任何内容).所以,如果我已经声明了一个带有值的变量'StackOverflow',它将成功找到它.
我的问题是我想更深入地搜索通过window对象(以及它自己的嵌套对象),以实现这样的结果:
var x = 'StackOverflow' // returns 'x'
var y = { a : 'StackOverflow' } // returns 'y.a'
var z = { a : { b: 'StackOverflow' } } // returns 'z.a.b'
Run Code Online (Sandbox Code Playgroud)
我对Object的继承方法有问题.有没有办法做到这一点?
浏览文档,我看到PHPUnit只提供以下功能:
所有这些都可以非常容易地在自定义测试脚本中实现,在不到1K的行中...
PHPUnit有2 MB的文件(大约200个),其中包含大量的类.此外,PHPUnit只从命令行运行:(
不会创建自己的脚本是一个更好的主意吗?
我有以下数组$ foo
array(10) {
[0] => array(4) {
["merchantId"] => string(5) "12e21"
["programId"] => string(27) "ddd3333"
["networkId"] => int(4)
["clientId"] => int(178)
}
[1] => array(4) {
["merchantId"] => string(5) "112e1"
["programId"] => string(27) "2vfrdbv1&=10&tmfdpid=csss"
["networkId"] => int(4)
["clientId"] => int(178)
}
[2] => array(4) {
["merchantId"] => string(5) "112e1"
["programId"] => string(27) "2vfrdbv1&=10&tmfdpid=csss"
["networkId"] => int(4)
["clientId"] => int(178)
}
Run Code Online (Sandbox Code Playgroud)
我需要一个clientId数组(仅限)
是否可以只访问clientId来创建一个没有循环的id数组?
就像是:
$foo['clientId']; //which doesn't work
Run Code Online (Sandbox Code Playgroud) 我在网上找到了以下内容但是我在实现它时遇到了麻烦
(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?
这就是我想要php做的事情:
请考虑以下事项: Look here: http://www.rocketlanguages.com/spanish/resources/pronunciation_spanish_accents.php
把它变成: Look here: <a href="http://www.rocketlanguages.com/spanish/resources/pronunciation_spanish_accents.php">http://www.rocketlanguages.com/span...anish_accents.php</a>
如果URL很长,那么文本会在中间被分解为......
php ×6
arrays ×3
mysql ×2
sql ×2
javascript ×1
object ×1
phpunit ×1
regex ×1
replication ×1
select ×1
unit-testing ×1
wordpress ×1