当前位置: 首页 > 知识库问答 >
问题:

使用PDO在mysql中插入数据的问题

郜昊苍
2023-03-14

我正在用php制作一个爬虫程序,这个爬虫程序正在工作

<?php 

  $dbHost = 'localhost';
  $dbName = 'invento';
  $dbUser = 'root';
  $dbPass = '';

try {

  $pdo = new PDO("mysql:host=$dbHost;dbname=$dbName","$dbUser", "$dbPass");
  $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

} catch(Exception $e) {

  echo $e->getMessage();
}


$html = file_get_contents('https://www.google.com');
preg_match('/<title>(.*)<\/title>/i', $html, $title);

$title_out = $title[1];

$sql = "INSERT INTO prueba (title) VALUES ($title_out)";

  $query = $pdo->prepare($sql);

  $result = $query->execute([
    'title' => $title_out
  ]);

但我在将标题添加到数据库时遇到一些问题,这是错误:

致命错误:未捕获PDOException:SQLSTATE[42S22]:未找到列:C:\xampp\htdocs\webcrawler\php web crawler\index.php:29堆栈跟踪:#0 C:\xampp\htdocs\webcrawler\php web crawler\index.php(29):PDO语句中的“字段列表”中的1054未知列“Google”-

共有1个答案

谭骏
2023-03-14

你误用了事先准备好的陈述。为了有效,您需要使用占位符来代替值。

$title_out = $title[1];
$sql = "INSERT INTO prueba (title) VALUES (:title)";
$query = $pdo->prepare($sql);
$result = $query->execute(['title' => $title_out]);

如果使用命名的占位符,还需要将占位符与键匹配。我通常使用未命名的占位符:

$title_out = $title[1];
$sql = "INSERT INTO prueba (title) VALUES (?)";
$query = $pdo->prepare($sql);
$result = $query->execute([$title_out]);

此外,您不应该在超文本标记语言上使用正则表达式。它会破裂有很多原因。使用解析器将更加健壮:

$html = file_get_contents('https://www.google.com');
$dom = new domdocument();
$dom->loadHTML($html);
$titleout = $dom->getElementsByTagName('title')[0]->nodeValue;
 类似资料:
  • 问题内容: 细节 我想利用mysql的空间扩展,因此我试图使用bindParam将经度和纬度存储在数据类型为POINT的mysql表中。不幸的是,我不断收到错误SQLSTATE [23000]:违反完整性约束:1048列“位置”不能为空。 我检查了经度和纬度是否有价值。因此问题必须出在我的代码上,但我看不到自己在做什么错。 这是我正在使用的代码。 题 我究竟做错了什么?如何使用PDO和bindPa

  • 问题内容: 我正在掌握PDO的基础知识。 但是我试图获取插入的行的ID,我使用: 我遇到的教程都是关于交易的,但是我没有使用交易! 问题答案: 您可能正在寻找lastInsertId。“返回最后插入的行或序列值的ID”。

  • 本文向大家介绍PHP PDO将数据插入表,包括了PHP PDO将数据插入表的使用技巧和注意事项,需要的朋友参考一下 插入数据非常简单,因为我们已经知道如何使用PDO与mysql(MariaDB)建立连接?我们可以使用与框架相同的代码,然后编辑$sql查询以插入数据而不是选择数据。 PHP代码使用PDO将数据插入表 输出结果 这样,我们可以使用PDO与MySQL进行交互,以轻松地向数据库表中添加新记

  • 问题内容: 我有一个简单的PHP Web应用程序,该应用程序通过文件上传接受图标图像并将其存储在MEDIUMBLOB列中。 在我的计算机(Windows)和两个Linux服务器上,这可以正常工作。在第三台Linux服务器上,插入的映像已损坏:执行SELECT后不可读,并且MySQL length()函数报告的列数据长度比上载文件的大小大40%。 (每个服务器都连接到一个单独的MySQL实例。) 当

  • 我正在尝试使用Java jdbc连接在mysql数据库中插入一行。。。。 这是我的密码, } 当我尝试运行代码时,我得到类强制转换异常。。。非常感谢您的帮助。这是我的学生。java类 } 当我运行代码时,我得到以下错误:线程“main”java中出现异常。lang.ClassCastException:类java。util。日期不能转换为java类。sql。jdbcsample中的日期(java.

  • 问题内容: 我试图将图像存储在数据库中,由于某种原因,它似乎无法正常工作。这是我桌子的结构。 这是我的查询,它插入图像或至少多数民众赞成在什么: 如果我打印file_get_contents($ tmp_image)的值,那么屏幕上会有大量数据。但是,此值不会存储在数据库中,这就是我面临的问题。 问题答案: 问题 这会在PHP中创建一个名为的字符串。暂时不要使用MySQL,因为您尚未执行任何查询。