如何确保我的查询插入新行?

时间:2016-07-04 14:57:06

标签: php mysql pdo pdostatement

这是我的问题:

$db->query("INSERT INTO mytable(col1, col2) VALUES('val1', 'val2')");

我试图了解该查询是否插入新行?我该如何确定?

注意:我在这种情况下没有使用execute()

3 个答案:

答案 0 :(得分:1)

直接拍摄 w3schools.com/php/php_mysql_insert ...

$sql = "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('John', 'Doe', 'john@example.com')";

if ($conn->query($sql) === TRUE) {
  echo "New record created successfully";
} else {
  echo "Error: " . $sql . "<br>" . $conn->error;
}

您正在寻找: if($ conn-&gt; query($ sql)=== TRUE)

修改 抱歉,错误的例子是@Drew指出的!

下面是正确的片段,它确实使用了执行,因为我认为它应该(如果我错了,请纠正我!)

此链接可能更有用:pdostatement.execute

try {
     $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
     // set the PDO error mode to exception
     $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
     $sql = "INSERT INTO MyGuests (firstname, lastname, email)
     VALUES ('John', 'Doe', 'john@example.com')";
     // use exec() because no results are returned
     $conn->exec($sql);
     echo "New record created successfully";
    }
catch(PDOException $e)
    {
      echo $sql . "<br>" . $e->getMessage();
    }

<?php 
function customExecute(PDOStatement &$sth, array $params = array()) { 
    if (empty($params)) 
        return $sth->execute(); 
    return $sth->execute($params); 
} 
?>

希望这有帮助!

答案 1 :(得分:0)

PDO Screenshot函数将返回query

您可以在PDOStatement中检查PDOStatement。如果一切都成功执行,它应该为0。 另一种选择是检查error code函数结果 - 如果插入了新行,则应为1。

答案 2 :(得分:0)

您通常会对通过execute()电话返回的PDOStatement对象执行prepare()来电。

此处,query()来电的返回值也是PDOStatement对象,您可以在其中应用rowCount()

  

PDO::query() 会在失败时返回PDOStatement个对象或FALSE