【问题标题】:mysqli data INSERT not working but no errorsmysqli 数据插入不起作用但没有错误
【发布时间】:2012-10-23 19:46:26
【问题描述】:

mysqli 数据插入不工作但没有错误 我刚开始使用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 的连接

【问题讨论】:

  • 我看不到您在哪里运行插入。你准备它,但实际上并没有执行它......
  • 在您的 bind_param 电话中看到“ss”让我发现了自己的问题,谢谢!

标签: php mysqli


【解决方案1】:

改变

$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();

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • @IZikDalal pozs 发现了另一个我没有发现的代码问题。您可能需要考虑使用(并接受)他的解决方案。
    【解决方案3】:

    正如@andrewsi 在他的评论中提到的那样,您准备了插入语句但没有执行它。这就是它不起作用的原因。

    尝试在您的代码中使用$stmt-&gt;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();
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-10
      • 1970-01-01
      • 1970-01-01
      • 2019-03-16
      • 2023-03-07
      • 2014-04-17
      • 2015-07-07
      • 1970-01-01
      相关资源
      最近更新 更多