用一些额外的数据将一个sql表复制到另一个sql表

s71maibg  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(332)

我有这个密码:

<?php
//MYSQL
$dbserver="..."; //adresa MySQL
$dblogin="...";       //jméno uživatele MySQL
$dbheslo="...";     //heslo MySQL
$dbnazev="...";      //název databáze MySQL
$mysqli = new mysqli($dbserver, $dblogin, $dbheslo, $dbnazev); 
if ($mysqli->connect_error) {
    die('Nepodařilo se připojit k MySQL serveru (' . $mysqli->connect_errno . ') '
            . $mysqli->connect_error);
}
$mysqli->query("SET NAMES 'utf8'"); // nastavíme kódování MySQL

while($row = $mysqli->query("SELECT * FROM `importovat_fyz` WHERE `tempid` IS NOT NULL")->fetch_assoc()){

$tempid = $row['tempid'];
$jmeno = $row['jmeno'];
$prijmeni = $row['prijmeni'];

$email = $row['email'];
$bydliste = $row['bydliste'];

$souhlas = "on";
$aktuality = "on";

$timestamp = time();
$hash = md5("77c0a83besxxxcg1a190ab90d".time().$tempid.rand(10000000, 99999999));

$poznamky = "import19052018";

$vloz ="INSERT into `potvrzenotest` set jmeno='".$jmeno."', prijmeni='".$prijmeni."', bydliste='".$bydliste."', email='".$email."', souhlas='".$souhlas."', aktuality='".$aktuality."', timestamp='".$timestamp."', hash='".$hash."', poznamky='".$poznamky."';";
$result=$mysqli->query($vloz);

$cas = date('H:i');
echo '['.$cas.'] ID '.$tempid.' imported.', PHP_EOL;
}

mysqli_close($mysqli); .
?>

我有一个表和一些数据,我必须复制到另一个表和一些额外的数据(如哈希等)。
当我运行上面的代码时,我得到了:

[17:17] ID 1 imported.
[17:17] ID 1 imported.
[17:17] ID 1 imported.
[17:17] ID 1 imported.
[17:17] ID 1 imported.

所以,只复制了一行。
你能帮帮我吗,哪里出了问题?

xu3bshqb

xu3bshqb1#

while($row = $mysqli->query("SELECT * FROM `importovat_fyz` WHERE `tempid` IS NOT NULL")->fetch_assoc()){ ... }

这个循环永远不会结束。它会一次又一次地取第一行。
您应该在循环外执行查询:

$selectResult = $mysqli->query("SELECT * FROM `importovat_fyz` WHERE `tempid` IS NOT NULL");

while ($row = $selectResult->fetch_assoc()) { ... }

作为旁注:考虑在循环中为insert语句使用一个准备好的语句。如果某些值可能包含特殊字符,如 ' . 如果在一个事务中运行它们,甚至可以提高性能。

相关问题