mysqli数据INSERT不工作但没有错误

时间:2012-10-23 19:46:26

标签: php mysqli

mysqli数据INSERT不起作用但没有错误 我刚开始使用mysqli,我真的不知道一切都很好 我也看到了关于它的其他问题,但没有一个解决方案适合我

这是表格:          

<head>
<title>NEW</title>
</head>

<body>
<table border="1">
  <tr>
    <td align="center">NEW</td>
  </tr>
  <tr>
    <td>
      <table>
        <form method="post" action="add.php">
        <tr>
          <td>name</td>
          <td><input type="text" name="name" size="20">
          </td>
        </tr>
        <tr>
          <td>type</td>
          <td><select name="ptype">
  <option value="a1">a1</option>
  <option value="a2">a2</option>
  <option value="a3">a3</option>
</select>
          </td>
        </tr>

        <tr>
          <td></td>
          <td align="right"><input type="submit" 
          name="submit" value="GO"></td>
        </tr>
        </table>
      </td>
    </tr>
</table>
</body>
</html>

这是add.php文件:

<?php
require("dbconnect.php");
if (isset($_POST['submit'])) {

    $db->query("SET NAMES 'utf8'");


$stmt = $db->prepare("INSERT INTO `business` (`ptype`, `name`) VALUES (?, ?)");
$stmt->bind_param('ss', $ptype, $name);

$name = $_POST["name"];
$ptype = $_POST["ptype"];



printf("%d Row inserted.\n", $stmt->affected_rows);

/* close statement and connection */
$stmt->close();

/* close connection */
}
$db->close();
?>

它说插入了0行

  • dbconnect.php文件包含与mysqli的连接

3 个答案:

答案 0 :(得分:3)

更改

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

$name = $_POST["name"];
$ptype = $_POST["ptype"];

$name = $_POST["name"];
$ptype = $_POST["ptype"];

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

答案 1 :(得分:2)

您已准备好语句并绑定参数。现在执行它。

$stmt = $db->prepare("INSERT INTO `business` (`ptype`, `name`) VALUES (?, ?)");
$stmt->bind_param('ss', $ptype, $name);
$stmt->execute();

答案 2 :(得分:1)

正如@andrewsi在他的评论中提到的,你准备了insert语句但没有执行它。这就是为什么它不起作用。

尝试在代码中使用$stmt->execute();

所以你的查询应该是这样的:

<?php
require("dbconnect.php");
if (isset($_POST['submit'])) {

    $db->query("SET NAMES 'utf8'");


$stmt = $db->prepare("INSERT INTO `business` (`ptype`, `name`) VALUES (?, ?)");

$name = $_POST["name"];
$ptype = $_POST["ptype"];

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




printf("%d Row inserted.\n", $stmt->affected_rows);

/* close statement and connection */
$stmt->close();

/* close connection */
}
$db->close();
?>