【问题标题】:I am trying to figure out how to insert data into my DB using php/mysqli我想弄清楚如何使用 php/mysqli 将数据插入我的数据库
【发布时间】:2015-05-27 18:11:26
【问题描述】:

到目前为止,这可能是这篇文章的第四次编辑,试图获得一些帮助。我已经多次重写此代码,但似乎没有任何工作正常。我已经在这个项目上工作了大约 5 个月,但仍然找不到合适的答案。

目前,除了从表单中插入数据外,我已经能够使语法正常工作。插入的是空值,而不是输入字段中的字符串。

最近的迭代是:

$con = mysqli_connect(host, username, password, db_name1);
if($con->connect_errno){
    printf("Connect failed: %s\n", $connection->error);
    exit();
}

$query = "Insert into hdd_tracking (`ticket`,`serial`,`vol_name`,`drivetype`,`project`,`notes`,`encrypt_date`,`encryption_password`,`fedX_tracking`,`fedX_rt_tracking`)
 VALUES (?,?,?,?,?,?,?,?,?,?)";
$stmt = $con->stmt_init();

if($stmt-> prepare($query)){

    $stmt->bind_param('isssssssss', 
    $_POST['ticket'],
    $_POST['serial'],
    $_POST['vol_name'],
    $_POST['drivetype'],
    $_POST['project'],
    $_POST['notes'],
    $_POST['encrypt_date'],
    $_POST['encryption_password'],
    $_POST['fedX_tracking'],
    $_POST['fedX_rt_tracking']);
}

$ticket = ISSET( $_POST['ticket']);
$serial = ISSET( $_POST['serial']);
$vol_name = ISSET( $_POST['vol_name']);
$drivetype = ISSET( $_POST['drivetype']);
$project = ISSET( $_POST['project']);
$notes = ISSET( $_POST['notes']);
$encrypt_date = ISSET( $_POST['encrypt_date']);
$encryption_password = ISSET( $_POST['encryption_password']);
$fedX_tracking = ISSET( $_POST['fedX_tracking']);
$fedX_rt_tracking = ISSET( $_POST['fedX_rt_tracking']);

$run = $stmt ->execute();
var_dump($stmt);

if($run){
    $stmt -> close();
    mysqli_close($con);
    }else{
        echo "Failure";
    }

表格如下:

<form class="form-inline insertDrive" role="form" name="insert" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<table class="insertHDD" style="border-collapse: separate; border-spacing: 10px;">
    <tr align="left">
        <td>
            <label class="center">Ticket:</label>
        </td>
        <td>
            <input type="email" class="form-control" name="ticket" placeholder="Ticket">
        </td>
    </tr>
    <tr>
        <td>
            <label class="center">Volume Name:</label>
        </td>
        <td>
            <input type="text" class="form-control" name="vol_name" placeholder="Volume Name">
        </td>
        <td>
            <label class="center">Type:</label>
        </td>
        <td>
            <input type="email" class="form-control" name="drivetype" placeholder="Type">
        </td>
    </tr>

    <tr>
        <td>
            <label class="center">Project:</label>
        </td>
        <td>
            <input type="text" class="form-control" name="project" placeholder="Project">
        </td>
        <td>
            <label class="center">Encryption:</label>
        </td>
        <td>
            <input type="email" class="form-control" name="encryption_password" placeholder="Encryption">
        </td>
    </tr>

    <tr>
        <td>
            <label class="center">Date:</label>
        </td>
        <td>
            <input type="text" class="form-control" name="encrypt_date" placeholder="Date">
        </td>
        <td>
            <label>Serial:</label>
        </td>
        <td>
            <input type="email" class="form-control" name="serial" placeholder="Serial">
        </td>
    </tr>

    <tr>
        <td>
            <label class="center">Tracking:</label>
        </td>
        <td>
            <input type="text" class="form-control" name="fedX_tracking" placeholder="Tracking">
        </td>
        <td>
            <label class="center">Return:</label>
        </td>
        <td>
            <input type="text" class="form-control" name="fedX_rt_tracking" placeholder="Return">
        </td>
    </tr>
    <tr>
        <td>
            <label class="center">Notes:</label>
        </td>
        <td colspan="3">
            <input type="text" width="200px" class="form-control" name="notes" placeholder="Notes">
        </td>
    </tr>
    <tr>
        <td colspan="4">
            <a class="btn btn-small btn-info" name="submit" name="submit">Submit</a>
        </td>
    </tr>
</table>
</form>

我已经从使用idname 进行了更正,但我仍然得到空值。 var_dump($stmt) 返回: object(mysqli_stmt)#1 (10) { ["affected_rows"]=> int(1) ["insert_id"]=> int(1262) ["num_rows"]=> int(0) ["param_count"]=> int(10) ["field_count"]=> int(0) ["errno"]=> int(0) ["error"]=> string(0) "" ["error_list"]=> array(0) { } ["sqlstate"]=> string(5) "00000" ["id"]=> int(1) }

仍然没有得到任何结果。

【问题讨论】:

  • 你能描述一下这个问题吗?这在什么方面失败了?表单数据是否发送到 PHP 脚本?这些值是您期望的值吗?数据库是否返回错误?
  • 没有任何错误,但是最初的问题是当页面被刷新时,有空值被插入到数据库中。因此,与数据库的连接正在工作。但是,当我尝试将数据插入模态表单时,它什么也不做。我是 PHP/MYSQLI 的新手,我不确定如何调试问题。我在 SO 上尝试了许多不同的解决方案,但似乎没有任何效果。

标签: php database mysqli insert


【解决方案1】:

是的,问题是您使用的是id,而您应该在html 表单inputs 中使用name。 例如

<input type="email" class="form-control" id="ticket" placeholder="Ticket">

应该是

<input type="email" class="form-control" name="ticket" placeholder="Ticket">

当使用 php $_POST[''] 时,您通过名称而不是 id 访问输入

【讨论】:

  • 感谢您提供的信息。我刚刚尝试过,但仍然得到空值。
  • 所以我对整个 PHP 脚本进行了更正。我没有使用变量进行查询,而是将其添加到 If 语句中: if(isset($_POST['submit'])){ $query = "Insert into hdd_tracking (ticket, serial, @987654329 @, drivetype, project, notes, encrypt_date, encryption_password, fedX_tracking, fedX_rt_tracking) 值 (?,?,?,?,?,?,?,?,?, ?)";我还删除了 $stmt ->.close();
  • ...等等,它有效吗?如果没有,您可以尝试打开错误报告。
猜你喜欢
  • 1970-01-01
  • 2013-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多