【问题标题】:MySQL affected rows -1 when inserting data into database将数据插入数据库时​​,MySQL 影响行 -1
【发布时间】:2018-11-20 01:59:13
【问题描述】:

我想创建一段简单的代码,将数据从 PHP 脚本中放入数据库,除了将数据放入数据库之外,一切正常! (我正在使用 PHP7 运行服务器)

受影响行的输出显示-1(奇怪),我仔细检查了我的代码,与其他代码进行了比较,尝试在互联网上搜索常见问题,甚至尝试在本地服务器上无济于事。

您可以在这里查看:
https://leer.bosvision.nl/register.php

我的代码:

<?php

$conn = mysqli_connect("localhost", "-user-", "-pass-", "-db-");

if(!$conn) {
    $msg = die('connection error');

} else {

    $msg = 'Connection success.';
}

echo $msg;

?>

<?php

$query = 'INSERT INTO users_two (ID, username, password) VALUES (1, gfd, gfd)';

if(mysqli_query($conn, $query)) {
    $result = 'Data saved';
} else {
    $result = 'No data saved';
}

$affected = mysqli_affected_rows($conn);

    echo $result . '.' . ' Affected rows: ' . $affected;

?>

【问题讨论】:

    标签: php mysql sql database insert


    【解决方案1】:

    引用the documentation

    -1 表示查询返回错误。

    而且您的insert 语句确实出错了,因为您没有gfd 列。如果您打算将其用作值,则应将其括在单引号中:

    $query = "INSERT INTO users_two (ID, username, password) VALUES (1, 'gfd', 'gfd')";
    # Here -------------------------------------------------------------^---^--^---^
    

    【讨论】:

    • 就是这样!谢谢!
    【解决方案2】:

    <?php
    
    	$conn = mysqli_connect("localhost", "-user-", "-pass-", "-db-");
    
    if(!$conn) {
    	$msg = die('connection error');
    	
    } else {
    	
    	$msg = 'Connection success.';
    }
    
    echo $msg;
    	
    ?>
    
    	
    	
    <?php
    	
    $query = "INSERT INTO users_two (username, password) VALUES ('gfd', 'gfd')";
    	
    if($result= mysqli_query($conn, $query)) {
    	$result = 'Data saved';
    } else {
    	$result = 'No data saved';
    }
    	
    $affected = mysqli_affected_rows($conn);
    	
    	echo $result . '.' . ' Affected rows: ' . $affected;
    	
    ?>

    假设 ID 是自动递增的,因此不需要在其中,或者不是,您遇到的问题是它是键的重复条目。您还需要将 var 数据包装在 ' '

    我猜这是一个 SQL 问题。您可以直接在数据库上运行查询吗?那会给你错误。

    【讨论】:

    • 另外,我不建议将您的用户名和密码发布到公共网站,并且您的代码不会清理传递给它的数据
    【解决方案3】:

    阅读此页面了解更多信息:PHP insert statement

    $sql = "INSERT INTO MyGuests (firstname, lastname, email) VALUES ('John', 'Doe', 'john@example.com')";
    
    if ($conn->query($sql) === TRUE) {
        echo "New record created successfully";
    } else {
        echo "Error: " . $sql . "<br>" . $conn->error;
    }
    

    通常您不应该自己插入 ID,因为它应该是自动递增的。

    【讨论】:

      【解决方案4】:

      尝试在字符串值中添加引号,如下所示:

      "INSERT INTO users_two (ID, username, password) VALUES (1, 'gfd', 'gfd')"

      【讨论】:

        猜你喜欢
        • 2012-06-01
        • 2014-12-16
        • 2023-04-10
        • 2013-05-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-27
        • 2013-04-25
        相关资源
        最近更新 更多