为什么phpqrcode会在调用QRCode::png()之前重新运行所有PHP?

为什么phpqrcode会在调用QRCode::png()之前重新运行所有PHP?,php,mysql,qr-code,Php,Mysql,Qr Code,我的问题涉及到PHP QR码库的使用 当我运行下面的代码时,最后的QRCode::png()调用会重新运行页面上以前的所有代码,从而生成第二个新的随机字符串,并再次运行插入查询。因此,我在表中得到了两个新行,而不是所需的一行 因此,一个显而易见的问题是:如何在不运行第二次插入查询的情况下获取二维码? // Connect to the database * require_once 'db_connect.php'; // Function to generate a randomized s

我的问题涉及到PHP QR码库的使用

当我运行下面的代码时,最后的QRCode::png()调用会重新运行页面上以前的所有代码,从而生成第二个新的随机字符串,并再次运行插入查询。因此,我在表中得到了两个新行,而不是所需的一行

因此,一个显而易见的问题是:如何在不运行第二次插入查询的情况下获取二维码?

// Connect to the database *
require_once 'db_connect.php';

// Function to generate a randomized string *
function F_generateRandomString($length = 4) {
    $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $randomString = '';
    for ($i = 0; $i < $length; $i++) {
        $randomString .= $characters[rand(0, strlen($characters) - 1)];
    }
    return $randomString;
}

// do-while loop to make sure we have a randomized *
// string that isn't alrady in the database        *
do {
    $random_string = F_generateRandomString();
    $q_random_check = "SELECT random_string FROM test_table WHERE random_string = '$random_string'";
    $r_random_check = mysql_query($q_random_check) or die (mysql_error());
    $num_random_check = mysql_num_rows($r_random_check);
}
while ($num_random_check);

// Insert data into database *
$q = "INSERT INTO test_table (random_string) VALUES ('$random_string')";
$r_q = mysql_query($q) or die (mysql_error());

// Form the URL for the QR Code *
$url = "https://example.com?$rxc_random";

// Generate the QR Code *
require_once 'phpqrcode/qrlib.php';
QRcode::png($url);
//连接到数据库*
需要一次'db_connect.php';
//函数生成随机字符串*
函数F_generateRandomString($length=4){
$characters='0123456789abcdefghijklmnopqrstuvxyzabcdefghijklmnopqrstuvxyz';
$randomString='';
对于($i=0;$i<$length;$i++){
$randomString.=$characters[rand(0,strlen($characters)-1)];
}
返回$randomString;
}
//执行while循环以确保我们有一个随机的*
//数据库中不存在的字符串*
做{
$random_string=F_generateRandomString();
$q_random_check=“从测试_表中选择random_字符串,其中random_字符串=‘$random_字符串’”;
$r_random_check=mysql_query($q_random_check)或die(mysql_error());
$num\u random\u check=mysql\u num\u行($r\u random\u check);
}
while($num\u随机检查);
//将数据插入数据库*
$q=“插入测试表格(随机字符串)值(“$random\U字符串”)”;
$r_q=mysql_query($q)或die(mysql_error());
//形成二维码的URL*
$url=”https://example.com?$rxc_随机”;
//生成二维码*
需要一次“phpqrcode/qrlib.php”;
QRcode::png($url);
(可能值得注意的是,我最终得到了二维码。)


更新
我认为,通过执行插入,然后成功地使用
标题(“位置:http://example.com?$rxc_随机)
将QR码的生成转移到一个单独的.php页面。

如何运行此脚本
QRcode::png
未重新运行页面。您可能会加载它两次,或者重新加载,或者类似的事情。我在浏览器中以.php页面的形式查看它。我只加载一次页面,然后检查数据库表。如果我注释掉最后一行“QRcode::png($url);”,则插入查询只运行一次。