我遇到错误:
您的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
答案 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);
}