小编Ric*_*iwi的帖子

如何从PHP插入/创建mySQL中的存储过程?

我有许多使用MySQL Workbench创建的存储过程.当使用MySQL工作台将它们放入我的测试数据库时,它们工作得很好.

现在我正在准备用于部署的数据库创建脚本,这是唯一一个给我带来麻烦的脚本.当我使用命令行/ mysql shell时,脚本可以很好地工作.只有当我使用PHP mysql(i)接口执行脚本时才会失败.没有评论.

我使用MySQL工作台为我生成的过程创建脚本; 也就是说,它有这种模式:

SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';
Run Code Online (Sandbox Code Playgroud)

在脚本的开头,然后重复每个过程:

DELIMITER $$
USE `dbname`$$
CREATE PROCEDURE `procname`(IN inputparameters)
BEGIN
Run Code Online (Sandbox Code Playgroud)

...程序在这里

;
END$$
DELIMITER ;
Run Code Online (Sandbox Code Playgroud)

如果从MySQL Workbench运行,此脚本可以正常工作.如果我从mysql命令行尝试相同的操作它也运行正常.但是当我通过PHP mysqli接口执行它时,它无法完成任何事情(使用mysqli_multi_query执行它,这对于创建和填充数据库的其他脚本工作正常).界面上没有返回错误,没有结果(!).我得到的只是"假",就是这样.错误代码为0,没有错误消息.

对我来说这是一个很大的WTF,我希望你能指出我正确的方向 - 如何解决这个问题并从PHP安装程序?

PS:给出并验证了root/admin访问权限(毕竟,我刚创建了具有相同连接,创建用户,插入表等的DB).

php mysql mysqli stored-procedures mysql-workbench

5
推荐指数
2
解决办法
7075
查看次数

Enum中的成员字段顺序

为什么声明的顺序对Java枚举很重要,我的意思是为什么这会给出(编译时)错误

public enum ErrorCodes {
    public int id;
    Undefined;
}
Run Code Online (Sandbox Code Playgroud)

但是这个很好:

public enum ErrorCodes {
    Undefined;
    public int id;

}.
Run Code Online (Sandbox Code Playgroud)

java enums

5
推荐指数
2
解决办法
323
查看次数

SQL WHERE IN (...) 按列表顺序排序?

假设我使用 where 子句查询数据库

WHERE _id IN (5,6,424,2)
Run Code Online (Sandbox Code Playgroud)

有没有办法让返回的游标按照 _id 在列表中列出的顺序进行排序?Cursor 中从第一个到最后一个的 _id 属性为 5, 6, 424, 2?

这恰好是通过 ContentProvider 在 Android 上实现的,但这可能不相关。

sql sorting where-clause

5
推荐指数
1
解决办法
7235
查看次数

JavaScript函数队列

我有很多功能需要连续运行,但不能在另一个功能完成之前运行.我需要的是一种方法,将这些函数排队,只有在上一个函数成功完成后才能运行.有任何想法吗?

Function1();
Function2();
Function3();
Function4();
Function5();
Run Code Online (Sandbox Code Playgroud)

javascript jquery javascript-events

5
推荐指数
3
解决办法
4284
查看次数

如何将表列标题添加到sql select语句中

我有一个像这样的SQL select语句:

select FirstName, LastName, Age from People
Run Code Online (Sandbox Code Playgroud)

这会给我一个像桌子的东西:

Peter  Smith    34
John   Walker   46
Pat    Benetar  57
Run Code Online (Sandbox Code Playgroud)

我想要的是将列标题插入第一行,如:

First Name  Last Name  Age
=========== ========== ====
Peter       Smith      34
John        Walker     46
Pat         Benetar    57
Run Code Online (Sandbox Code Playgroud)

有人可以建议如何实现这一目标吗?

您是否可以使用标题创建一个临时表并将数据附加到此表中?

sql t-sql sql-server header

5
推荐指数
1
解决办法
8万
查看次数

使用MySQL获取关注者并在一个查询中关注

好吧,我想说我正在创建像twitter这样的社交网络.我有一张名为"社交"的表格,在这里我们将社交内容放在哪里.

example me ( uid = 1 )
friend1 ( uid = 2 )
friend2 ( uid = 3 )
Run Code Online (Sandbox Code Playgroud)

桌子

SID AUID BUID
1   1    2
2   1    3
3   2    1
Run Code Online (Sandbox Code Playgroud)

我们在这里得到的信息是

user id 1(me) is following 2
user id 1(me) is following 3
user id 2 is following 1(me)
Run Code Online (Sandbox Code Playgroud)

问题是:我们可以在一个查询中执行以下两个查询吗?

function CountFollowers($uid){
    $count = $this->fetch("SELECT COUNT(BUID) as followers
                                   FROM social WHERE BUID = :uid", 
    array( 'uid' => $uid));
    return $count;
}
Run Code Online (Sandbox Code Playgroud)

function CountFollowing($uid){
    $count = …
Run Code Online (Sandbox Code Playgroud)

php mysql sql

5
推荐指数
1
解决办法
1417
查看次数

Sql server表用法统计信息

我想找出数据库中哪些表使用最多(我的意思是读/写字节/表大小比)或IO /表大小比.决定哪些表放在较快的光盘上,哪些表放在较慢的光盘上.有任何想法吗?

我尝试使用dm_db_index_usage_stats
但是如何找出单个搜索/扫描下有多少IO?

先感谢您.

t-sql sql-server

5
推荐指数
1
解决办法
1万
查看次数

按列A分组但比较B列

这个让我在最后几个小时难过,在这个阶段我觉得我需要一些帮助......

我需要比较单个表中的多个组,并确定col B中列出的项目匹配的位置.例如: -

Col A...............Col B
John................Apple
John................Orange
John................Banana
Mary................Orange
Mary................Strawberry
David...............Apple
David...............Orange
David...............Banana
Run Code Online (Sandbox Code Playgroud)

我希望'John'和'David'返回,因为他们在col B中的项目匹配.希望这是有道理的!提前致谢!G

sql t-sql sql-server sql-server-2008

5
推荐指数
1
解决办法
161
查看次数

SQL Delete清除表而不是错误

我有一块SQL(你认为)不会编译,而是删除目标表中的所有行.

考虑这个设置:

create table TableA (ColumnA varchar(200));
create table TableB (ColumnB varchar(200));

insert TableA values ('A'),('B'),('C');
insert TableB values ('A');
Run Code Online (Sandbox Code Playgroud)

然后是以下sql:

--Returns all rows from TableA
select * from TableA;

--Does not error (ColumnA does not exist on TableB)
delete TableA where ColumnA in (select ColumnA from TableB)

--No Rows are returned
select * from TableA;
Run Code Online (Sandbox Code Playgroud)

上面的delete语句会导致所有行被删除TableA,而不是ColumnA在其中不存在的错误TableB

这里有一个SQL小提琴:http ://www.sqlfiddle.com/#!3/9d883 /6

看来这个ColumnA来自TableA正在被接收,但预计它将"超出范围".

为什么是这样?

t-sql sql-server sql-server-2008 correlated-subquery

5
推荐指数
1
解决办法
130
查看次数

什么运行模式应该用于ServiceBus触发的WebJob?

我有一个WebJob,只要ServiceBus队列项出现就会被触发

public static void ProcessQueueMessage(
    [ServiceBusTrigger("%ServiceBusHighPriorityQueueName%")] BrokeredMessage message)
Run Code Online (Sandbox Code Playgroud)

一些网站声明如下

  • 连续:将始终运行的WebJob
  • 触发:在进行API调用时按需运行的WebJob,或在达到预定条件时运行的WebJob.

我假设ServiceBus队列触发器处理程序是"触发"而不是"连续",那么在设置webjob-publish-settings.json参数runMode时应该使用什么?

由于它被触发,AppService仍然需要是AlwaysOn吗?

c# azure azureservicebus azure-webjobs

5
推荐指数
1
解决办法
286
查看次数