无法将fopen插入mysql->错误:插入MariaDB

时间:2018-10-02 16:27:15

标签: php mysql

我遇到错误:

  

您的SQL语法有错误;检查手册   对应于您的MariaDB服务器版本,以使用正确的语法   附近'('10 .22.227.175','0')('10.22.227.49','0')('10.22.229.88','2   ')('192.168.2'行

这是我的php代码:

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


$file = file('MyLogFile.log'); # read file into array
$count = count($file);
if($count > 0) # file is not empty
{
    $sql = "INSERT into `ping`(`ip`,`fs`) values";
    foreach($file as $row)
    {
        $ping = explode(',',$row);
        $sql .= "('$ping[0]','$ping[1]')";

    }
    if (mysqli_query($conn, $sql)) {
    echo "New record created successfully";
} else {
     echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}

mysqli_close($conn);


}

这是我的mylogfile.log *

10.22.227.254,0 
10.22.227.175,0 
10.22.227.49,0 
10.22.229.88,2
192.168.200.55,2 
10.22.227.155,0

我的MYSQL数据库是

id  int(11)  AUTO_INCREMENT

ip  text  latin1_swedish_ci 

fs  text  latin1_swedish_ci 

pid  text  latin1_swedish_ci 

dt  datetime   

1 个答案:

答案 0 :(得分:2)

最重要的是:您的查询对SQL Injection相关的攻击开放。请学习如何使用Prepared Statements

现在,您在Value子句中的不同行之间缺少逗号。如果要插入多行,则Insert Syntax为:

INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
    [INTO] tbl_name
    [PARTITION (partition_name [, partition_name] ...)]
    [(col_name [, col_name] ...)]
    {VALUES | VALUE} (value_list) [, (value_list)] ...
    [ON DUPLICATE KEY UPDATE assignment_list]

您可以执行以下操作:

if($count > 0) # file is not empty
{
    // a counter variable to determine if this is first row of values
    $counter = 1;

    $sql = "INSERT into `ping`(`ip`,`fs`) values ";
    foreach($file as $row)
    {
        $ping = explode(',',$row);

        // if it is more than first row, add a comma separator
        if ($counter > 1) 
             $sql .= ' , ';

        $sql .= "('$ping[0]','$ping[1]')";

        // increment the counter
        $counter++;

    }
    if (mysqli_query($conn, $sql)) {
    echo "New record created successfully";
} else {
     echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}