我创建了一个脚本,从其他网站获取数据并将其插入或添加到mysql表中。当我用来从网站获取数据时,它运行正常但是当我在mysql中插入它时我无法做到这一点。它显示我的错误,即
Error: INSERT INTO body (title) VALUES (Offworld Trading Company Free Download)
您的SQL语法有错误;检查与您的MariaDB服务器版本对应的手册,以便在第2行的“贸易公司免费下载”附近使用正确的语法错误:INSERT INTO body(body)VALUES(
这是我的代码,看看我做错了什么。
require_once('simple_html_dom.php');
$html = new simple_html_dom();
$xml = simplexml_load_file("sitemap.xml");
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "kuta";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
foreach ($xml->url as $s) {
$s = $s->loc;
$html = file_get_html($s);
$element = $html->find('div[class=post-content clear-block]');
// Find all links
$vez = $html->find('div[class=post-date]');
$p = '|<a [^>]*href="http://<Some Url>[^"]*"[^>]*>.*</a>|iU';
$h = $html->find('h1[class=title]');
if (empty($vez)) {
foreach ($h as $ha) {
$q = strip_tags($ha->plaintext);
$sql = "INSERT INTO body (title) VALUES ($q)";
if ($conn->query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
}
foreach ($element as $a) {
if ($a === end($element)) {
$m = preg_replace($p, '', $a);
}
$m = strip_tags($m, '<p><a><img><br /><br><div>');
$sql = "INSERT INTO body (body) VALUES ($m)";
if ($conn->query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
}
}
}
$conn->close();
我创建了一个名为body的表,所有事情都进展顺利,当我插入像
这样的数据时 $sql = "INSERT INTO MyGuests (title, body)
VALUES ('Aditya', 'pandey')";
告诉我我错在哪里并纠正我。你的回答非常值得,请帮助我。
答案 0 :(得分:2)
当您将值插入字符串字段时,正确的MySql语法是使用引用'
例如:
$sql = "INSERT INTO body (body) VALUES ('$m')";
也适用于$q
和所有字符串。我建议你用mysqli_real_escape_string
函数来逃避它们,以避免sql注入和语法错误。
答案 1 :(得分:0)
试试这些代码;
$sql = "INSERT INTO body (`title`) VALUES ('$q')";
和
$sql = "INSERT INTO body (`body`) VALUES ('$m')";
希望这有帮助。