在PHP / MySQLi中获得错误的结果

时间:2016-01-25 12:33:15

标签: php mysqli

我正在尝试将表单中的用户名和年龄插入名为users的数据库中。成功插入后,我想显示成功消息。这是我的代码,但即使成功插入,它也会以某种方式打印失败消息:

<?php require_once('Connections/Localhost.php'); ?>
<?php

$success = NULL;

if(isset($_POST['AddUser'])) {

    session_start();

    $name = $_POST['Name'];
    $age = $_POST['Age'];

    $stmt = $con->prepare("INSERT INTO employees(Name, Age)Values(?, ?)");

    $stmt->bind_param('ss', $name, $age);

    $stmt->execute();

    $result = $stmt->get_result();

    if($result) {

    $success = "Added Successfully!";   

    }
    else {

    $success = "Sorry! Couln't add!";   

    }

}

?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Add User</title>
<link href="Stylesheet/form.css" rel="stylesheet" type="text/css">
</head>

<body>
<div id="form">
<form action="index.php" id="form1" name="form1" method="POST">
  <div class="formfield"><input name="Name" type="text" id="Name" placeholder="Name"></input><br></div>
  <div class="formfield"><input name="Age" type="number" id="Age" placeholder="Age"></input><br></div>
  <div class="formbutton"><input name="AddUser" type="submit" id="AddUser" value="Add"></input></div>
</form>

<?php 

echo "<br>";
echo $success; 

?>
</div>
</body>
</html>

任何人都可以指出错误吗?

2 个答案:

答案 0 :(得分:3)

根据我的评论查看答案(并评论,如果它没有被删除),我会将其作为答案提交:

get_result() &#34;返回成功SELECT查询的结果集,或其他DML查询或失败时返回FALSE。&#34; http://php.net/manual/en/mysqli-stmt.get-result.php

使用affected_rows() http://php.net/manual/en/mysqli.affected-rows.php

&#34;返回受上一次INSERT,UPDATE,REPLACE或DELETE查询影响的行数。&#34;

您还应该通过更改以下内容来检查查询错误:

$stmt->execute();

为:

if(!$stmt->execute()){
   trigger_error("There was an error....".$con->error, E_USER_WARNING);
}

尝试插入时是否有任何错误。

参考:

error reporting添加到文件的顶部,这有助于查找错误。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// Then the rest of your code

旁注:只应在暂存时进行显示错误,而不是生产。

答案 1 :(得分:0)

您无法在get_result()使用lastInsertid(),它可以使用<? $stmt = $con->prepare(" your query ... "); $stmt->bind_param('ss', $name, $age); $stmt->execute(); $lastId = $con->lastInsertId(); // add this if($lastId > 0) { $success = "Added Successfully!"; } else { $success = "Sorry! Couln't add!"; } ?> ,它会为您提供最后插入的ID,而不是您可以使用条件:

validates :dx1, presence: true