这是我的问题:
$db->query("INSERT INTO mytable(col1, col2) VALUES('val1', 'val2')");
我试图了解该查询是否插入新行?我该如何确定?
注意:我在这种情况下没有使用execute()
。
答案 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
。