douchou8935 2018-01-07 05:41
浏览 80

从for循环向数据库插入错误

I tried inserting some license generated kes from a for loop into the database but I was getting Errormessage: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'keys)values('46F2-SH73-2QDD-Z4VH-HV')' at line 1

I have been on it for sometime now trying to fiure it but it gives the same error everytime I run it.

Here is my code:

<?php
//ob_start();
//session_start();
//error_reporting(0);
//ini_set('display_errors', '0');
date_default_timezone_set('Africa/Lagos');   
#$db = parse_ini_file("../config/db.ini");
$dbhost = 'localhost'; //$db['host'];
$dbuser = 'root';//$db['user'];
$dbpass = '';//$db['pass'];
$dbname = 'infonetsch_mgmt';//$db['dbname'];

//Connect
$mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname);
if (mysqli_connect_errno()) {
    printf("MySQLi connection failed: ", mysqli_connect_error());
    exit();
} 
// Change character set to utf8
if (!$mysqli->set_charset('utf8')) {
    printf('Error loading character set utf8: %s
', $mysqli->error);
}

?>
<html>
<head>
<title>License Key Generator</title>
</head>
<body style="background-color:#F0F0F0">
<h1>License Key generation</h1>
<form method="POST" action="">
<table>
<tr>
<td>Keys to generate</td>
<td><select name="numkeys">
        <option value="1">1</option>
        <option value="5" selected>5</option>
        <option value="10">10</option>
        <option value="20">20</option>
        <option value="50">50</option>
        <option value="100">100</option>
        <option value="500">500</option>
        <option value="1000">1000</option>
        <option value="5000">5000</option>
        <option value="10000">10000</option>
        <option value="20000">20000</option>
        <option value="50000">50000</option>
    </select></td>
</tr>
<tr>
<td>Length of Key</td>
<td><select name="keylen">
        <option value="8">8</option>
        <option value="10">10</option>
        <option value="12">12</option>
        <option value="14">14</option>
        <option value="16">16</option>
        <option value="18">18</option>
        <option value="20">20</option>
</select></td>
</tr>

</table>
<input name="validate" type="submit" value="Generate!"/>
</table>
</form>

<?php 
if(isset($_POST['validate'])){
    $name= 'a';//$_POST['client'];
    $software= 'sis';//$_POST['software'];
    $numkeys=$_POST['numkeys']; if($numkeys<1)$numkeys=1; if($numkeys>50000)$numkeys=50000;
    $keylen=$_POST['keylen'];if($keylen<1)$keylen=1; if($keylen>20)$keylen=20;

include("license_key.class.php");

$pass=new license_key();
echo "<h3>Generating $numkeys Random License Keys </h3>
 KeyLenght: $keylen</a><hr/>";

for($i=0;$i<$numkeys;$i++){
    $pass->keylen=$keylen;
    $key= $pass->codeGenerate($name.$software);
    $get = mysqli_query($mysqli, "insert into license_keys(keys)values('".$key."')");//Insert query

    $j=$i+1;

    echo "$j- $key <br/>";


}
if($get){
echo "Done";    
}else{ printf("Errormessage: %s
", $mysqli->error);; }
echo "<br/><br/><a href=\"test.php\">Generate again</a><br/><br/>";

}
?>
</body>
</html>

Why am I getting such an error?

  • 写回答

3条回答 默认 最新

  • dongsisui7562 2018-01-07 06:15
    关注

    run that code and check your keys field varchar limit

       <?php
            //ob_start();
            //session_start();
            //error_reporting(0);
            //ini_set('display_errors', '0');
            date_default_timezone_set('Africa/Lagos');   
            #$db = parse_ini_file("../config/db.ini");
            $dbhost = 'localhost'; //$db['host'];
            $dbuser = 'root';//$db['user'];
            $dbpass = '';//$db['pass'];
            $dbname = 'infonetsch_mgmt';//$db['dbname'];
    
            //Connect
            $mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname);
            if (mysqli_connect_errno()) {
                printf("MySQLi connection failed: ", mysqli_connect_error());
                exit();
            } 
            // Change character set to utf8
            if (!$mysqli->set_charset('utf8')) {
                printf('Error loading character set utf8: %s
    ', $mysqli->error);
            }
    
            ?>
            <html>
            <head>
            <title>License Key Generator</title>
            </head>
            <body style="background-color:#F0F0F0">
            <h1>License Key generation</h1>
            <form method="POST" action="">
            <table>
            <tr>
            <td>Keys to generate</td>
            <td><select name="numkeys">
                    <option value="1">1</option>
                    <option value="5" selected>5</option>
                    <option value="10">10</option>
                    <option value="20">20</option>
                    <option value="50">50</option>
                    <option value="100">100</option>
                    <option value="500">500</option>
                    <option value="1000">1000</option>
                    <option value="5000">5000</option>
                    <option value="10000">10000</option>
                    <option value="20000">20000</option>
                    <option value="50000">50000</option>
                </select></td>
            </tr>
            <tr>
            <td>Length of Key</td>
            <td><select name="keylen">
                    <option value="8">8</option>
                    <option value="10">10</option>
                    <option value="12">12</option>
                    <option value="14">14</option>
                    <option value="16">16</option>
                    <option value="18">18</option>
                    <option value="20">20</option>
            </select></td>
            </tr>
    
            </table>
            <input name="validate" type="submit" value="Generate!"/>
            </table>
            </form>
    
            <?php 
            if(isset($_POST['validate'])){
                $name= 'a';//$_POST['client'];
                $software= 'sis';//$_POST['software'];
                $numkeys=$_POST['numkeys']; if($numkeys<1)$numkeys=1; if($numkeys>50000)$numkeys=50000;
                $keylen=$_POST['keylen'];if($keylen<1)$keylen=1; if($keylen>20)$keylen=20;
    
            include("license_key.class.php");
    
            $pass=new license_key();
            echo "<h3>Generating $numkeys Random License Keys </h3>
             KeyLenght: $keylen</a><hr/>";
    
            for($i=0;$i<$numkeys;$i++){
                $pass->keylen=$keylen;
                $key= $pass->codeGenerate($name.$software);
                $get = mysqli_query($mysqli, "INSERT INTO license_keys (keys) VALUES('".$key."')");//Insert query
    
                $j=$i+1;
    
                echo "$j- $key <br/>";
    
    
        }
        if($get){
        echo "Done";    
        }else{ printf("Errormessage: %s
    ", $mysqli->error);; }
        echo "<br/><br/><a href=\"test.php\">Generate again</a><br/><br/>";
    
        }
        ?>
        </body>
        </html>
    
    评论

报告相同问题?

悬赏问题

  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥15 如何修改pca中的feature函数
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况