标签: multi-query

PHP PDO交易?

我有一个注册页面,基本上我需要将数据插入到4个表中.我是PDO的新手,对某些事感到困惑.

基本上,如果任何插入失败,我不希望任何添加到数据库的东西,这似乎很简单.

我的困惑是,我需要先在我的users表中插入用户的用户名,电子邮件,密码等,这样我就可以得到(不确定如何)使用PDO的MySQL给我的用户(由mysql自动递增).我需要用户uid MySQL为其他表提供了我的用户,因为其他表需要uid所以所有内容都正确链接在一起.我的表是InnoDB,我有外键从users_profiles(user_uid),users_status(user_uid),users_roles(user_uid)到users.user_uid,所以它们都链接在一起.

但同时我想确保如果例如在users表中插入数据之后(因此我可以获得MySQL给用户的uid),如果任何其他插入失败,它将删除插入users表中的数据.

我认为我展示我的代码是最好的; 我已经注释掉了代码,并在代码中进行了解释,这可能使它更容易理解.

// Begin our transaction, we need to insert data into 4 tables:
// users, users_status, users_roles, users_profiles
// connect to database
$dbh = sql_con();

// begin transaction
$dbh->beginTransaction();

try {

    // this query inserts data into the `users` table
    $stmt = $dbh->prepare('
                        INSERT INTO `users`
                        (users_status, user_login, user_pass, user_email, user_registered)
                        VALUES
                        (?, ?, ?, ?, NOW())');

    $stmt->bindParam(1, $userstatus,     PDO::PARAM_STR);
    $stmt->bindParam(2, $username,       PDO::PARAM_STR);
    $stmt->bindParam(3, $HashedPassword, PDO::PARAM_STR);
    $stmt->bindParam(4, $email, …
Run Code Online (Sandbox Code Playgroud)

php mysqli pdo transactions multi-query

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

在codeigniter中执行多个查询,这些查询无法逐个执行

我有一个"事件"表.为简单起见,您可以想象它应该像分层类别.它使用嵌套集模型(感谢Mark Hillyer在http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/上的帖子)

我的代码:

$query = 
"LOCK TABLE event WRITE;
SELECT @ParentRight := parent.rgt, @Level := parent.level FROM event AS parent WHERE parent.id = '{$data['parent_id']}';

UPDATE event SET rgt = rgt + 2 WHERE rgt > @ParentRight;
UPDATE event SET lft = lft + 2 WHERE lft > @ParentRight;

INSERT INTO event(lft, rgt, level) VALUES(@ParentRight, @ParentRight + 1, @Level);
UNLOCK TABLES;";

mysqli_multi_query($this->db->conn_id, $query);

$data['id'] = $this->db->insert_id();
return $this->db->update('event', $data);
Run Code Online (Sandbox Code Playgroud)

之后我将用更新最后插入的对象 $this->db->update('event', $data)

$data 是用户填充的数组.


问题1: …

php mysql mysqli codeigniter multi-query

13
推荐指数
2
解决办法
2万
查看次数

"命令不同步;您现在无法运行此命令" - 由mysqli :: multi_query引起

我通过mysqli :: multi_query运行多个删除,它正在弄乱下一行查询.抛出以下错误.

 Error - SQLSTATE HY000. 
 Sql error: Commands out of sync; you can't run this command now
Run Code Online (Sandbox Code Playgroud)

我是否需要以某种方式清除多重查询,以便它不会弄乱我的下一个查询?这个错误的原因是什么?

这就是我运行多重查询的方式

function deleteSomeTables($args){
    $sql = 'delete 1;delete another;';
   if($database->multi_query($sql)){
    return true;
    }else{
    return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

我在Windows 7上使用最新版本的Xampp

mysqli multi-query

9
推荐指数
2
解决办法
9756
查看次数

为什么使用事务时 multi_query 不起作用?

这是一个例子。

$mysqli = new mysqli("localhost", "root", "123", "temp");

$mysqli->begin_transaction();

$sql1 = "insert into test (Name) values ('pratik5');";
$sql1 .= "insert into test (Name) values ('pratik6');";

$test = $mysqli->multi_query($sql1);

$mysqli->commit();
Run Code Online (Sandbox Code Playgroud)

两个查询中都没有任何错误,但是在调用时commit()这些值并未存储在数据库中。如果拆分为单独的查询并通过query().

php mysqli multi-query mysqli-multi-query

8
推荐指数
2
解决办法
1450
查看次数

mysql multi_query间歇性失败

function cpanel_populate_database($dbname) 
{ 
     // populate database
     $sql = file_get_contents(dirname(__FILE__) . '/PHP-Point-Of-Sale/database/database.sql');
     $mysqli->multi_query($sql);

     $mysqli->close();
 }
Run Code Online (Sandbox Code Playgroud)

sql文件是从phpMyAdmin直接导出的,大约95%的时间运行没有问题,所有表都被创建并插入数据.(我从头开始创建数据库)

另外5%只创建了第一个表,有时创建了前4个表,但没有创建其他表(有30个表).

我决定不使用multi_query,因为它看起来很麻烦,看看是否通过在分号后在每一行使用mysql_query来发生错误.有没有人遇到像这样的问题?

php mysql multi-query

6
推荐指数
2
解决办法
610
查看次数

如果发生错误,请继续PHP多查询

我已经问过一些关于在PHP的多查询中捕获错误的事情了,但没有人回答.现在我已经google了一点,并了解了更多的问题.

我有这个代码:

// Some starting variables
$test = new mysqli("localhost","root","","testdatabase");
$Query = array();
$Query[] = "SELECT 'wos' FROM items WHERE itemID = 3";
$Query[] = "SELECT 'wos' FROM items WHERE itemID";
$Query[] = "SELECT 'wos' FROM items WHERE itemID = 5";
$Query = implode(";",$Query);
$Errors = array();

// Execute multi query

if ($test->multi_query($Query)) {
  do {
    // fetch results
    $Result = $test->store_result();
    print_r($Result);
    if($test->errno === 0) {
          echo $Result->num_rows . "<br>";
    }
    else {
        $Errors[] = $test->error;
    }
    $Result->close();

    if …
Run Code Online (Sandbox Code Playgroud)

php error-handling multi-query

6
推荐指数
1
解决办法
1524
查看次数

单个大查询和几个小查询哪个更快?

所以我想从数据库中获取数据,哪种方法更快,创建多个查询还是一个多查询

mysql multi-query

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

Postgresql 在一个更新语句中更新 2 个表

我有两个具有相同字段的不同选项卡,例如:

host.enabled, service.enabled.
Run Code Online (Sandbox Code Playgroud)

我如何从 1 条更新语句更新他的内容?

我试过:

UPDATE hosts AS h, services AS s SET h.enabled=0, s.enabled=0
    WHERE
    ctid IN (
    SELECT hst.ctid FROM hosts hst LEFT JOIN services srv ON hst.host_id = srv.host_id
        WHERE hst.instance_id=1
    );
Run Code Online (Sandbox Code Playgroud)

在 mysql 语法上,这个查询的工作方式如下:

UPDATE hosts LEFT JOIN services ON hosts.host_id=services.host_id SET hosts.enabled=0, services.enabled=0 WHERE hosts.instance_id=1
Run Code Online (Sandbox Code Playgroud)

postgresql multi-query sql-update

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

NHibernate QueryOver可以使用MultiQuery吗?

session.CreateMultiQuery().Add(...) 接受IQuery,但IQueryOver似乎不从IQuery继承.

对我来说似乎很奇怪,我无法在多个查询中使用QueryOver?

nhibernate multi-query queryover

2
推荐指数
1
解决办法
2032
查看次数

NHibernate Multiquery用于没有连接的急切加载

是否可以使用多个查询并且有两个hql查询返回两个不同的实体集,其中一个集合在另一个中使用,并且会话通过第一级缓存"修复"了这个?

例如场景(一个愚蠢的,它可以用连接解决)

public class Room
{
  ...
  public virtual ISet<Bookings> Bookings {get;set;}
  public virtual bool IsAvailible {get;set;}
  ...
}

public class Booking
{
  ...
}
Run Code Online (Sandbox Code Playgroud)

用两个hql执行一个多标准后:

  1. 返回IsAvailible = true的所有房间
  2. 返回所有预订房间,房间有可用房间

当从结果及其预订中访问房间时,我希望通过会话的第一级缓存从第二个结果集中解析它们,并避免使用n + 1.

nhibernate multi-query

2
推荐指数
1
解决办法
3806
查看次数

过滤标签列表

我正在尝试选择我的Django数据库中的所有歌曲,其标签是给定列表中的任何一个.有一个Song模型,一个Tag模型和一个SongTag模型(用于多对多关系).

这是我的尝试:

taglist = ["cool", "great"]
tags = Tag.objects.filter(name__in=taglist).values_list('id', flat=True)
song_tags = SongTag.objects.filter(tag__in=list(tags))
Run Code Online (Sandbox Code Playgroud)

此时我收到一个错误:

DatabaseError: MultiQuery does not support keys_only.
Run Code Online (Sandbox Code Playgroud)

我错了什么?如果您可以建议一个完全不同的方法来解决问题,那么它也会受到欢迎!

编辑:我应该提到我正在使用django-nonrel 在Google AppEngine上使用Django

django google-app-engine filter multi-query

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

mysql使用php拆分多查询字符串

我想创建一个数据库恢复功能,它将解析用phpMyAdmin进行的转储,并将执行所有查询.

我已经有一个MySQL类来执行查询,但它只知道如何进行单个查询.我正在寻找一种方法将文件内容拆分为单个查询.

我尝试使用preg_split ...但没有设法让它工作.

$queries = preg_split('/[(.+);\s*\n/', $content, -1, PREG_SPLIT_NO_EMPTY);
Run Code Online (Sandbox Code Playgroud)

我对正则表达式不是很了解.有没有办法实现我的目标?

php mysql multi-query

0
推荐指数
1
解决办法
1899
查看次数