0

到目前为止,我有这个脚本,我的目标是运行 sql 插入查询并获取结果并回显其中一些以出现在网页中。我想让 id 和 code 以及 Period 出现在输出中。每次,我运行脚本,它都会给我错误消息'0 结果',即使我通过 phpmyadmin 检查查询是否成功并且如我所愿插入了一个新行。

我从不同的表单复制了这段代码的某些部分,我怀疑我的成功键“if ($result->num_rows) {”与插入 sql 不匹配。有人可以帮助我如何为插入查询定义正确的成功键,并帮助我从插入的数据中输出 ID 和 CODE 和 PERIOD。非常感谢

    <?php
$servername = "localhost";
$username = "myuser";
$password = "mypass";
$dbname = "xtream_iptvpro";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$randnum = rand(1111111111111111,9999999999999999);
$ipaddress = $_SERVER['REMOTE_ADDR'];
$sql = "INSERT INTO codes (id,code,period,userid,statut,prixcode,ip) VALUES (null,'$randnum',365,73,0,0,'$ipaddress')";
$result = $conn->query($sql);

if ($result->num_rows) {
    while($row = $result->fetch_assoc()) {
        echo $row['id']."  ".$row['code']."<br/>";
    }
} else {
    echo "0 results";
}
$conn->close();
?>
4

1 回答 1

1

您可以删除该$result =设置,因为 anINSERT不会返回它添加的记录的结果。你必须SELECT为此做一个。我还将修复您的代码以使用准备好的语句。将这部分代码更改为简单...

$sql = $conn->prepare('INSERT INTO codes (code,period,userid,statut,prixcode,ip) VALUES (?,?,?,?,?,?)');
$sql->bind_param('iiiiis', $randnum, 365, 73, 0, 0, $ipaddress);
$sql->execute();

然后在此之后,尝试使用mysql_insert_id()连接变量设置结果并使用正常的准备好的语句进行选择。

$resultid = $conn->insert_id;

$statement = $conn->prepare('SELECT * FROM codes WHERE id = ?');
$statement->bind_param('i', $resultid);
$statement->execute();
$result = $statement->get_result();

$result现在将保存最新的结果INSERT。尝试做print_r($result)然后调整您的显示代码以处理该数据格式。

于 2020-02-24T21:11:09.930 回答