我正在使用PHP和MySQL.
如果我使用INSERT ON DUPLICATE UPDATESQL语句,那么如何知道上一次操作是否是成功插入而不是更新或不成功插入?
假设是有问题的表没有使用自动增量,所以我不能用一个mysql_insert_id来帮助我找出答案.
我阅读了很多关于PHP的Restful教程.
(我不想深入探讨为什么我不使用RoR.这是由于团队更熟悉PHP)
因为我们计划将来扩展到API,所以我认为实现Restful Web服务很重要.
我看了很多教程
http://www.gen-x-design.com/archives/create-a-rest-api-with-php/
显然宁静是为web服务.
网页怎么样?它们也可以是RESTFUL吗?
如果答案是否定的,请不要超出这条线并告诉我.谢谢.
我知道让网址看起来像RESTFUL网址就是简单地使用mod_rewrite.但是,我很确定,宁静的架构不仅仅是让网址看起来不错.
例如,我在名为list.php的网页上有一个项目列表.每个项目旁边都有一个删除链接.例如,list.php?id = 1&deleteitem
当有人点击list.php?id = 1&deleteitem链接时,我会回到同一个list.php文件并检查$ _GET中的param deleteitem.
如果检测到,我将根据$ _GET中的参数id从数据库中删除.
之后我将重定向回list.php没有任何参数.
我想知道,我如何使整个流程RESTFUL?
我问,因为在REST中,要删除一些你需要使用HTTP请求方法(DELETE).
很明显,在我的链接中,它们都很简单 <a href="list.php?id=1&deleteitem">Delete</a>
请赐教.
我的编程并不那么强大,如果给出的建议尽可能地成为外行,那将是很好的.
谢谢.
编辑
我有2个跟进问题.
问题1)由于这是一个带分页的项目列表,如果我想让它成为RESTful,URL会是什么样子?
问题2)因为我在列表中的每个项目旁边放置DELETE链接,我现在明白了,我应该使用
<form method="POST">
<input type=hidden name="_method" value="delete">
<input type="submit" >
</form>
Run Code Online (Sandbox Code Playgroud)
代替.
但表格应该张贴到哪里?项目网址?/项目/ {项目-ID}
但是我想回到这个列表页面,在成功删除数据库中的行后显示成功消息.
当我使用成功消息刷新此列表页面时,我还想避免弹出消息.
如果我发回这个list.php网址,那么它不是RESTful是吗?因为下面的答案我告诉我每个项目都是需要自己网址的资源.
请赐教.谢谢.
在Twig中,我可以通过两种方式进行设置
{% set car = 'Honda' %}
Run Code Online (Sandbox Code Playgroud)
要么
{% set car %}Honda{%endset%}
Run Code Online (Sandbox Code Playgroud)
第二种方式是'捕获'
当我尝试将变量用作数组中的索引时,例如,
{{ cars[car].wheels | length }}
Run Code Online (Sandbox Code Playgroud)
第二种设置变量的方法不起作用.为什么?
我有这样的二维数组
array(
array(
'column1' => 10,
'column2' => 11
),
array(
'column1' => 25,
'column2' => 137
),
array(
'column1' => 21,
'column2' => 58
)
)
Run Code Online (Sandbox Code Playgroud)
钥匙column1和column2固定.他们不会改变.
我需要对这个2D数组中的数据执行各种功能.各种功能可以分为两种方式:
行方式第一函数的示例,
我想在乘以列之前首先按行排列所有数字.
所以预期的行为是(10 + 11)*(25 + 137)*(21 + 58)
逐列第一函数的示例,
我想在乘以行之前先按列逐列总结所有数字.
所以预期的行为是(10 + 25 + 21)*(11 + 137 + 58)
我写出自己的组件功能没有问题.在上面,我只需要两个组件函数sum和product
function sum (adden1, adden2) {
return adden1 + adden2;
}
function product (multiplicant1, multiplicant2) {
return multiplicant1 * multiplicant2;
}
Run Code Online (Sandbox Code Playgroud)
问题是映射.我想减少我需要编写的for循环的数量.我希望我的代码更加模块化,因为有些情况需要的行为如下:
我正在使用 CakePHP 2.4
我有一个网址,例如 /sent?note=123&test=abc
我想删除该note参数,同时返回其余的网址。IE
/sent?test=abc
Run Code Online (Sandbox Code Playgroud)
我有一段代码可以工作,但仅适用于查询参数。我想了解如何改进我的代码,使其适用于:
例如
/sent/name1:value1?note=123&test=abc#top
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止编写的代码。https://github.com/simkimsia/UtilityComponents/blob/master/Controller/Component/RequestExtrasHandlerComponent.php#L79
更新第三部分:
让我用更多的例子来说明我所说的更通用的答案的含义。
更通用的答案应该假设没有关于 url 模式的先验知识。
假设给定这个网址
/sent/name1:value1?note=123&test=abc
Run Code Online (Sandbox Code Playgroud)
我只想删除查询参数note并返回
/sent/name1:value1?test=abc
Run Code Online (Sandbox Code Playgroud)
更通用的解决方案应该可以给我返回这个网址。
另一个例子。这次要摆脱命名参数。
假设再次给出这个网址
/sent/name1:value1?note=123&test=abc
Run Code Online (Sandbox Code Playgroud)
我想摆脱name1并回来:
/sent?note=123&test=abc
Run Code Online (Sandbox Code Playgroud)
同样,更通用的解决方案也应该能够实现这一点。
更新第二部分:
我正在寻找更通用的答案。假设 Web 应用程序不知道该 url 被称为已发送。您也不知道查询参数是否包含单词 note 或 test。我仍然如何完成上述任务?
我希望能够对任何操作使用相同的代码。这样,我就可以将其打包成组件以便轻松重用。
更新第一部分:
据我了解,主题标签不会传递给 PHP。所以请忽略这一点。
有关如何从主题标签获取值的线索:
我读了这份文件.
但我想我一定是误解了它.
$http.defaults.headers.jsonp = { 'Accept' : 'application/json'};
$http.jsonp(url).success(function(data, status, headers, config) {
Run Code Online (Sandbox Code Playgroud)
我也试过了
$httpProvider.defaults.headers.jsonp = { 'Accept' : 'application/json'};
$http.jsonp(url).success(function(data, status, headers, config) {
Run Code Online (Sandbox Code Playgroud)
我想改变Accept到application/json
都没有工作.
我想让这个包由Composer自动加载.
我意识到我需要添加一些东西composer.json,我需要有一个autoload.php地方.
应该自动加载的唯一类是Webbot.php.
有人能给我一步一步细分来完成这个吗?
返回的Google搜索结果是自动加载库的说明.
我需要有关如何编写自动加载库的说明.
我在我的现场CakePHP网络应用程序上获得了以下内容:
2014-02-18 04:06:00 Error: [MissingControllerException] Controller class Robots.txtController could not be found.
Exception Attributes: array (
'class' => 'Robots.txtController',
'plugin' => NULL,
)
Request URL: /robots.txt
Run Code Online (Sandbox Code Playgroud)
我该怎么办?
我正在使用CakePHP 2.4.2
更新:
这是我的robots.txt.还有什么我应该补充的吗?我把它放进去了webroot.
User-agent: *
Disallow: /admin/
Run Code Online (Sandbox Code Playgroud) 当我打字时
python manage.py test
Run Code Online (Sandbox Code Playgroud)
有时我会被问到是否要删除测试数据库。
Type 'yes' if you would like to try deleting the test database 'test_replicate_live', or 'no' to cancel: yes
Run Code Online (Sandbox Code Playgroud)
当我想保留测试数据库时,我知道命令是:
python manage.py test --keepdb
Run Code Online (Sandbox Code Playgroud)
我想知道是否有一种方法可以强制删除测试数据库而不等待问题出现。
有时我只是提前知道,我想删除测试数据库。
是一个
python manage.py test --nokeepdb
Run Code Online (Sandbox Code Playgroud) 我目前的剧本是这样构建的
projectroot
|
|--ubuntu2004
|
|--00_setup
|
|--vars
|--playbook.yml
|--readme.md
Run Code Online (Sandbox Code Playgroud)
因为我的剧本使用 ansible.posix 并且我还将我的剧本提交到 github 存储库中。我希望是否有办法在这种情况下包含所需的集合ansible.posix作为要求以及如何安装它?
我看到有多种方式https://docs.ansible.com/ansible/latest/user_guide/collections_using.html#installing-collections
我想知道在使用 github 存储库作为剧本的版本控制时有意义的最佳实践方式是什么?
php ×6
arrays ×2
cakephp ×2
cakephp-2.0 ×2
angularjs ×1
ansible ×1
composer-php ×1
django ×1
http-headers ×1
javascript ×1
json ×1
mapping ×1
mysql ×1
python ×1
rest ×1
restful-url ×1
robots.txt ×1
set ×1
testing ×1
twig ×1
url-routing ×1
variables ×1