【发布时间】: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>
我已经从使用id 到name 进行了更正,但我仍然得到空值。 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