标签: rows-affected

使用C API获取SQLite语句的受影响行数

我正在DELETE使用SQLite 3 C API 执行一个语句,我想知道如何获取受影响的行数.

不幸的是,没有诸如此类的功能sqlite3_affected_rows.

c sqlite rows-affected sql-delete

12
推荐指数
2
解决办法
9422
查看次数

在mysql中更新/删除并获取受影响的行ID列表?

是否有一种有效的方法可以从mysql中的UPDATE或DELETE查询中获取受影响的行ID列表(不是通过PHP的mysql_affected_rows()受影响的行的#,而是受影响的实际行ID)?

在postgresql中,UPDATE/DELETE查询中有一个RETURNING子句,可用于指定返回的受影响行的值.

在mysql中,获取受影响行的"强力"方式似乎是:1.获取READ LOCK.2.使用UPDATE/DELETE查询的WHERE条件SELECT to以获取受影响的行ID.3.更新/删除.4.释放锁定.

上述方式似乎非常低效.是否有更有效的方法来获取mysql中受影响的行ID?

php mysql rows-affected

11
推荐指数
2
解决办法
8473
查看次数

当查询中传递的数据与数据库中已有的数据相同时,如何确定MySQL更新查询是否成功?

假设您有一个包含数据库中预先填充数据的表单,您允许用户进行更改并保存表单.如果用户单击保存按钮而不进行任何更改,MySQL将不会实际执行写操作,因此affected_rows将返回0.

我了解行为,但除了检查affected_rows的数量之外,确定更新是否失败的最佳做法是什么?

区分实际失败的更新和"成功"但导致0 affected_rows的更新以便我可以向用户提供反馈的最佳做法是什么?

php mysql error-handling rows-affected

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

什么可能导致'受影响的行'不正确?

使用Microsoft SQL Server Management Studio 2008.我做了一个简单的事务:

BEGIN TRAN

SELECT ko.ID, os.ID AS ID2
FROM table_a AS ko
JOIN table_b AS os ON os.ID=ko.ID
WHERE (ko.the_date IS NOT NULL AND os.the_date IS NULL);

UPDATE table_b SET the_date=ko.the_date
FROM table_a AS ko
JOIN table_b AS os ON os.ID=ko.ID
WHERE (ko.the_date IS NOT NULL AND os.the_date IS NULL);

SELECT ko.ID, os.ID AS ID2
FROM table_a AS ko
JOIN table_b AS os ON os.ID=ko.ID
WHERE (ko.the_date IS NOT NULL AND os.the_date IS NULL);


ROLLBACK …
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server select rows-affected

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

如何获得affected_rows MYSQLI准备语句,PHP

当我INSERT和SELECT时,我似乎遇到了遇到affected_rows的问题,它只是因某种原因返回-1?我使用的数据库类,我一直用于我的项目,使用MYSQLI准备语句,以避免sql注入.

有谁知道它为什么一直返回-1?根据我的阅读,它应该能够在INSERT和SELECT上返回受影响的行.

数据库类

$class database {
protected $_mysqli;
protected $_debug;

public function __construct($host, $username, $password, $database, $debug) {
    $this->_mysqli = new mysqli($host, $username, $password, $database);
    $this->_debug = (bool) $debug;
    if (mysqli_connect_errno()) {
        if ($this->_debug) {
            echo mysqli_connect_error();
            debug_print_backtrace();
        }
        return false;
    }
    return true;
}

public function q($query) {
    if ($query = $this->_mysqli->prepare($query)) {
        if (func_num_args() > 1) {
            $x = func_get_args();
            $args = array_merge(array(func_get_arg(1)),
                array_slice($x, 2));
            $args_ref = array();
            foreach($args as $k => &$arg) {
                $args_ref[$k] = &$arg; 
            } …
Run Code Online (Sandbox Code Playgroud)

php mysqli prepared-statement rows-affected

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

mysql_affected_rows()返回-1

执行SQL语句时,例如INSERT INTO table... ON DUPLICATE KEY UPDATE ...我依靠mysql_affected_rows()来确定是否执行了插入或更新.作为http://dev.mysql.com/doc/refman/5.1/en/mysql-affected-rows.html上的mysql站点,它指出:

对于INSERT ... ON DUPLICATE KEY UPDATE语句,如果将行作为新行插入,则affected-rows值为1,如果更新现有行,则为2.

一切正常,直到我们升级到MySQL 5.1.16,当时许多查询现在有mysql_affected_rows()返回MINUS ONE(-1)

http://dev.mysql.com/doc/refman/5.1/en/mysql-store-result.html上的MySQL站点上建议的解决方案是在每次执行函数mysql_query()之后调用函数mysql_store_result()在选择查询上.

但是,PHP似乎没有定义这样的功能.

如何使用PHP和MySQL 5.1.16使mysql_affected_rows()正常工作?

php mysql rows-affected

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

当值未更改时,MySQL在UPDATE时没有受影响的行

MySQL与PHP,试图更新一行:

$dbQuery = 'UPDATE UserTable SET Age=25 WHERE Id=3';
$result = mysqli_query($dbLink, $dbQuery);
if ($result === FALSE) {
  // Take care of error
}
else {
  $numAffectedRows = mysqli_affected_rows($dbLink);
}
Run Code Online (Sandbox Code Playgroud)

我在两种不同的情况下得到零$ numAffectedRows :
1.当没有用户行时Id = 3
2.当有一个用户行时Id = 3但是Age已经是25

有没有办法可以区分这两种情况?(除了之前读取行并在更新前手动检查值)

php mysql rows-affected sql-update

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

PHPaffected_rows 返回负 1 (-1)

这很奇怪,查询执行得很好并将数据插入表中,但我受影响的行显示在负数而不是 1。有谁知道为什么会发生这种情况?

连接.php:

<?php
 error_reporting(0);
 $db = new mysqli('localhost', 'root', 'pass', 'db');
 ?>
Run Code Online (Sandbox Code Playgroud)

这是主要代码:

<?php
 include 'connect.php';
 include 'blowfish.php';

 if($_POST['email'] == true)
 {
     if($db -> connect_errno)
     {
         echo "Could not connect to the database, please try again later...";
     }
     else
     {
         $email = $_POST['email'];

         $query = "SELECT id FROM users WHERE email = ?";
         $statmnt = $db -> prepare($query);
         $statmnt-> bind_param("s",$email);
         $statmnt-> execute();
         $statmnt-> bind_result($result);
         $statmnt-> fetch();
         $statmnt-> reset();
         if($result)
         {
             $id = $result;
             $result = "";

             $randomString = generateRandomString(50); …
Run Code Online (Sandbox Code Playgroud)

php mysqli rows-affected

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

php mysqli affected_rows

我只是在做一些测试,我无法弄清楚我是否以正确的方式做这件事.查询将更新行..但affected_rows总是返回0 ..为什么?

<?php 

$connection = new mysqli('localhost', 'user', 'pass', 'db');
if (mysqli_connect_errno()) {
   printf("Can't connect to MySQL Server. Errorcode: %s\n", mysqli_connect_error());
   exit;
}

$email      = $connection->real_escape_string($_GET['email']);
$activation = $connection->real_escape_string($_GET['hash']);

//$query =  $connection->query("SELECT email, activationCode, active FROM users WHERE email='".$email."' AND hash='".$activation."' AND active='0'");
$select = $connection->query("UPDATE users SET active = '1' WHERE email='".$email."' AND activationCode='".$activation."' AND active='0'");


printf("Affected rows (UPDATE): %d\n", $select->affected_rows);



$connection->close();
?>
Run Code Online (Sandbox Code Playgroud)

php mysqli rows-affected

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

mysql在重复密钥更新时插入,检查发生了哪一个

在PHP中,如何检测以下查询中发生的(INSERTUPDATE):

INSERT INTO ... ON DUPLICATE KEY UPDATE ...
Run Code Online (Sandbox Code Playgroud)

php mysql unique-key rows-affected

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

MySQL ROW_COUNT() 在 Prepare 语句中不起作用

我在做什么。

我有一个删除行的过程。

我得到var_SelectedIds,分离UUID()

然后

SET     @var_SQLStr = '';   
SET     @var_SQLStr = CONCAT(@var_SQLStr ,'Delete ');
SET     @var_SQLStr = CONCAT(@var_SQLStr ,'FROM DemoTable');        
SET     @var_SQLStr = CONCAT(@var_SQLStr ,'WHERE DemoTableId IN (''',Replace(var_SelectedIds,',',''','''),'''); ');

-- SELECT @var_SQLStr;
PREPARE stmt FROM @var_SQLStr;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
Run Code Online (Sandbox Code Playgroud)

我已经尝试过的。

// This is throwing SQL Syntax ERROR.

SET     @var_SQLStr = '';   
SET     @var_SQLStr = CONCAT(@var_SQLStr ,'Delete ');
SET     @var_SQLStr = CONCAT(@var_SQLStr ,'FROM DemoTable');        
SET     @var_SQLStr = CONCAT(@var_SQLStr ,'WHERE DemoTableId IN (''',Replace(var_SelectedIds,',',''','''),'''); ');
SET …
Run Code Online (Sandbox Code Playgroud)

mysql stored-procedures rowcount rows-affected

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