我在mysql中有一个包含两列的表.身份证号码.第一次列出4到13之间的所有行
SELECT * FROM table WHERE id BETWEEN 4 AND 13
现在我有一个从4到13的所有行的列表.(绿色行)
我想在这个列表中搜索,找到数字<= 10的第一行和数字<= 1000的最后一行以及中间的所有行.即我需要下图所示的橙色行:

所以,我需要这样的东西:
SELECT *
FROM TABLE
WHERE id BETWEEN 4 AND 13
AND number
START
FROM <= 10
AND END WITH <= 1000
Run Code Online (Sandbox Code Playgroud)
但显然上述情况并不正确.我怎样才能获得橙色行?
我想抛出一个自定义异常,这是我的CakePHP应用程序的控制器中的数据验证异常.如何在Cakephp中创建自己的自定义异常处理程序,以便我可以抛出异常并捕获异常?
我的代码示例:
function getUserDetails($userid){
try{
if(!$validUser){
throw new Exception('Invalid User');
}
return $userDetailsData; //returned from db
}catch(Exception $e){
echo 'Error:'.$e->getMessage();
return;
}
}
Run Code Online (Sandbox Code Playgroud)
是否有可能在cakephp中使用自定义Exception类,以便只能抛出那些我做的异常.希望它澄清问题.谢谢.
我是PHP和CakePHP的新手.使用CakePhp连接数据库时发现问题.
以下是我的应用配置.我在Bitnami WAMP堆栈5.4.40-0我使用CakePhp 3.0.4创建一个web mvc应用程序
在我的app.php文件中输入数据源
/**
* Connection information used by the ORM to connect
* to your application's datastores.
* Drivers include Mysql Postgres Sqlite Sqlserver
* See vendor\cakephp\cakephp\src\Database\Driver for complete list
*/
'Datasources' => [
'default' => [
'className' => 'Cake\Database\Connection',
'driver' => 'Cake\Database\Driver\Mysql',
'persistent' => false,
'host' => 'localhost',
/**
* CakePHP will use the default DB port based on the driver selected
* MySQL on MAMP uses port 8889, MAMP users will want to uncomment …Run Code Online (Sandbox Code Playgroud) 我正在第一次设置/学习 CakePHP,我正在努力弄清楚为什么我无法通过默认端口 8765 访问我的服务器。我喜欢在 ubuntu 机器上进行开发并远程处理代码。该服务器托管在我本地计算机上的虚拟机上,但我将其称为远程计算机。服务器和我的远程计算机都位于同一 10.0.1.x 子网中。我可以通过端口 80 很好地访问服务器。但是,当我尝试访问 hxxp://10.0.1.44:8765/ 时,我收到以下消息
Failed to connect to 10.0.1.44 port 8765: Connection refused
我尝试通过以下方式禁用 Ubuntu 16 服务器上的防火墙,sudo uff disable但没有成功。我还尝试编辑 Apache2.conf 文件并覆盖目录权限。这些是我当前的全局权限:
<Directory />
Options FollowSymLinks
AllowOverride None
Require all denied
</Directory>
<Directory /usr/share>
AllowOverride None
Require all granted
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
Run Code Online (Sandbox Code Playgroud)
任何帮助是极大的赞赏!
我是CakePHP框架的新手,正在尝试设置一个"Hello World"项目.在处理它时,我在执行简单的数据库查询时遇到了来自CakePHP的非常慢的响应.
以下是我所做的步骤:
编辑默认的AppController.php文件,如下所示:
class AppController extends Controller {
var $uses = array('Test');
function say_hello() {
$this->Test->query("select * from test where id=0");
echo "hello";
}
}
Run Code Online (Sandbox Code Playgroud)之后,我访问了"http:// localhost/app/say_hello"链接,并且响应时间超过1秒.
如果我将查询语句注释掉如下:
class AppController extends Controller {
var $uses = array('Test');
function say_hello() {
//$this->Test->query("select * from test where id=0");
echo "hello";
}
}
Run Code Online (Sandbox Code Playgroud)
然后,它只需要大约60ms来响应.
这对我来说似乎不对,因为在空表上执行简单查询不应该花费~940ms.我尝试使用DebugKit进行调试,它表明ControllerAction(在这种情况下,say_hello动作非常简单)占用了超过1秒的处理时间.另请注意,缓慢问题不是由DB引起的,因为DebugKit表明在执行say_hello操作时只有一个查询,并且该查询几乎需要0ms才能完成.
我不确定是什么导致这种缓慢.任何经验丰富的CakePHP成员能否告诉我一些关于这种情况下错误的信息?我还应该做些什么来解决问题并解决问题?
谢谢.
我有以下代码:
$string = '{"tracking_url":{"11":{"affiliate":"OMG","url_part1":<<some url>>,"url_part2":<<some url>>"}}}';
$points = json_decode( $string, true );
Run Code Online (Sandbox Code Playgroud)
我如何访问url_part1和url_part2?
加载我的cakephp应用程序大约0.5秒后,添加一个以"#"开头的随机代码.到网址.
这种行为可以在这里看到,网址从以下变化:
http://dev4.west-dyke.com/verhuur
Run Code Online (Sandbox Code Playgroud)
至
http://dev4.west-dyke.com/verhuur#.Ud03FBcW3RE
Run Code Online (Sandbox Code Playgroud)
是什么造成的?
我有这两个CakePHP V 2.4.5型号:
class Owner extends AppModel {
public $name = 'Owner';
public $hasMany = array('Car');
}
Run Code Online (Sandbox Code Playgroud)
和
class Car extends AppModel {
public $name = 'Car';
public $belongsTo = array('Owner');
}
Run Code Online (Sandbox Code Playgroud)
在我的控制器中我写道:
var $uses = array('Owner', 'Car');
public function test(){
$data = array(
'Owner' => array(
'name' => 'Me'
),
'Car' => array(
array('color' => 'red'),
array('color' => 'blue')
)
);
$this->Owner->saveAssociated($data, array('deep' => true));
}
Run Code Online (Sandbox Code Playgroud)
但CakePHP创造了所有者并忘记了他的汽车:
1 BEGIN
2 INSERT INTO `test`.`owners` (`name`) VALUES ('Me')
3 COMMIT
Run Code Online (Sandbox Code Playgroud)
这就是我的ERM的样子: …
我的查找条件似乎没有进入基于Debugkits SQL日志的SQL.有人能向我指出我做错了什么吗?这是我第一次尝试过滤查找结果.
BillingCenters控制器
$conditions = array(
'BillingCenter.isactive' => '1'
);
$this->set(
'billingcenters',
$this->BillingCenter->find('all', array($conditions))
);
Run Code Online (Sandbox Code Playgroud)
DebugKit显示的结果SQL查询是..(缺少WHERE子句???)
SELECT
`BillingCenter`.`id`,
`BillingCenter`.`startdate`,
`BillingCenter`.`enddate`,
`BillingCenter`.`name`,
`BillingCenter`.`isactive`,
`BillingCenter`.`created`,
`BillingCenter`.`modified`
FROM
`bm`.`billing_centers` AS `BillingCenter`
WHERE
1 = 1
Run Code Online (Sandbox Code Playgroud)
如果我将控制器代码更改为
$this->set(
'billingcenters',
$this->BillingCenter->find('all')
);
Run Code Online (Sandbox Code Playgroud)
生成的SQL仍然是相同的.
SELECT
`BillingCenter`.`id`,
`BillingCenter`.`startdate`,
`BillingCenter`.`enddate`,
`BillingCenter`.`name`,
`BillingCenter`.`isactive`,
`BillingCenter`.`created`,
`BillingCenter`.`modified`
FROM
`bm`.`billing_centers` AS `BillingCenter`
WHERE
1 = 1
Run Code Online (Sandbox Code Playgroud) 我使用这个非常简单的正则表达式:
^[\x20-\x7E]+$
Run Code Online (Sandbox Code Playgroud)
当我尝试将它与一些PHP正则表达式函数一起使用时,例如preg_match(),当我使用~字符(代字号)作为分隔符时,它会在单一情况下抛出警告.
因此,执行以下行很顺利
preg_match("/^[\x20-\x7E]+$/", $s); # delimiter "/"
preg_match("!^[\x20-\x7E]+$!", $s); # delimiter "!"
preg_match("#^[\x20-\x7E]+$#", $s); # delimiter "#"
Run Code Online (Sandbox Code Playgroud)
但由于某种原因,这条线
preg_match("~^[\x20-\x7E]+$~", $s); # delimiter "~"
Run Code Online (Sandbox Code Playgroud)
发出警告
Warning: preg_match(): Unknown modifier ']' in some_script.php on line XX
Run Code Online (Sandbox Code Playgroud)
注意:只有当它与双引号一起使用时才会发生!
我一直使用代字号作为分隔符,直到这种情况从未遇到过问题,并且真的很想知道为什么会发生这种情况.找不到代字号在正则表达式中有一些特殊含义(我现在肯定它没有99%),或者它只是一个错误.
我当然可以解决这个问题,但问题是:代字号和任何其他分隔符有什么区别?