Как сделать php скрипт для запуска insert sql Query и затем получить информацию из вставленных строк? Я начинающий - PullRequest
0 голосов
/ 24 февраля 2020

У меня пока есть этот сценарий, и я собираюсь запустить запрос вставки sql, получить результаты и вывести некоторые из них на веб-страницу. Я хочу иметь идентификатор и код и период, чтобы появиться в выводе. Каждый раз, когда я запускаю скрипт, он выдает мне сообщение об ошибке «0 результатов», хотя я проверял через phpmyadmin, что запрос был успешным, и новая строка была вставлена, как я и надеялся.

Я скопировал некоторые части этого кода из разных форм, сомневаюсь, что мой ключ успеха "if ($ result-> num_rows) {" со вставкой sql не совпадает. Может ли кто-нибудь помочь мне с определением правильного ключа успеха для запроса на вставку и помочь мне вывести идентификатор, код и период из вставленных данных. Большое спасибо

    <?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();
?>

1 Ответ

1 голос
/ 25 февраля 2020

Вы можете удалить настройку $result =, поскольку INSERT не вернет результаты добавленных записей. Вы должны сделать 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() для соединения var, и выполнить выборку с помощью обычного подготовленного оператора.

$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), а затем настроить код отображения для обработки этого формата данных.

...