首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >编辑表格PDO

编辑表格PDO
EN

Stack Overflow用户
提问于 2016-09-01 15:23:19
回答 2查看 1.7K关注 0票数 0

我在Server数据库中有一个表。我创建了一个"edit.php“,在这里我们可以更新数据库。利用PDO建立数据库连接。

表中有很多Null值。当我点击“编辑”选项时,表单就会弹出。如果我完全填写记录,数据库就会被更新。否则,我会得到这个错误消息。

SQLSTATE42000: MicrosoftSQL ServerError将数据类型nvarchar转换为数字。

我的edit.php的代码包括如下:

代码语言:javascript
复制
require_once('database.php');
if (isset($_POST['btn_submit'])) {
        $id = $_POST['txt_id'];
        $site = $_POST['txt_site_code'];
        $location = $_POST['txt_location_name'];

 try {
       $stmt = $conn->prepare("UPDATE MATRIX SET Site_Code=:site, Location_name=:location
WHERE OBJECTID =:id");
$stmt->execute(array(':site' => $site, ':location' => $location,':id' => $id));
if ($stmt) {


                   header('Location:index.php');

               }
             } catch (PDOException $e) {
               echo $e->getMessage();
            }
}

    $object_id = '';
    $site = '';
    $location = '';

 if (isset($_GET['id'])) {
        $id = $_GET['id'];
        $stmt = $conn->prepare("SELECT * FROM MATRIX WHERE OBJECTID=:id");
        $stmt->execute(array(':id' => $id));
        $row = $stmt->fetch();
        $object_id = $row['OBJECTID'];
        $site = $row['Site_Code'];
        $location = $row['Location_name'];
}

?>
    <h2>Edit the records</h2>

    <form action="" method="post">
        <table border="3px" cellpadding="5px">

            <tr>
                <td>Site Code</td>
                <td><input type="text" name="txt_site_code"  value="<?= $site; ?>"></td>
            </tr>

            <tr>
                <td>Location Name</td>
                <td><input type="text" name="txt_location_name" value="<?= $location; ?>"></td>
            </tr>

             <tr>
                <td><input type="hidden" name="txt_id" value="<?= $object_id; ?>"></td>
                <td><input type="submit" name="btn_submit" value="Submit"></td>
            </tr>

</table>
</form>

我很感谢你的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-01 15:38:43

必须防止php接收到的空数据。

例子:

代码语言:javascript
复制
$site = '';
if(isset($_POST['site'])) {
    $site = $_POST['site'];
}

在更新数据库之前,对要保护的每个值执行此操作。

票数 0
EN

Stack Overflow用户

发布于 2016-09-02 01:13:50

如果没有提交的数据而不是数值,则插入字符串值(例如“0”)。由于向字符串类型列插入数值而导致的错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39275460

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档