php - 错误: INSERT INTO fails mysql

标签 php mysql database-connection sql-insert

我的 mySQL 有问题,出现此错误

Notice: Undefined property: PDO::$error in C:\MAMP\htdocs\paresFiles.php on line 33
Error: INSERT INTO `searchtable`(`word`, `array`, `count`) VALUES ( pinocchio , 1 ,-1)

Notice: Undefined property: PDO::$error in C:\MAMP\htdocs\paresFiles.php on line 33
Error: INSERT INTO `searchtable`(`word`, `array`, `count`) VALUES ( alice's adventures in wonderland , 2 ,-1)

Notice: Undefined property: PDO::$error in C:\MAMP\htdocs\paresFiles.php on line 33
Error: INSERT INTO `searchtable`(`word`, `array`, `count`) VALUES ( peter pan , 3 ,-1)

Notice: Undefined property: PDO::$error in C:\MAMP\htdocs\paresFiles.php on line 33
Error: INSERT INTO `searchtable`(`word`, `array`, `count`) VALUES ( snow white , 4 ,-1)

我想在 mysql 中的搜索表中插入 3 个值,当我插入它们时,我收到此错误,并且在我的表中没有获取任何数据。 我需要做什么来解决这个错误?

这是我的代码(用于插入数据):

include_once 'connect.php';

$dir = "storage";
$title;
$auther;
$fileNum;
// Open a directory, and read its contents
foreach (glob($dir."/*.txt") as $filename) {
    $handle = fopen($filename, "r");
    if ($handle) {
    while (($line = fgets($handle)) !== false) {
        if(substr( $line, 0, 3 ) === "#id")
        {
            $fileNum=substr( $line, 5, 3 );
        }
        if(substr( $line, 0, 6 ) === "#title")
        {
            $title=substr( $line, 8, 100 );
        }
        if(substr( $line, 0, 5 ) === "#name")
        {
            $auther=substr( $line, 8, 12 );
        }
    }
    $titleVal=-1;

    $sql = "INSERT INTO `searchtable`(`word`, `array`, `count`) VALUES     ($title,$fileNum,$titleVal)";

       if ($db->query($sql) === TRUE) {
            echo "New record created successfully";
        } else {
            echo "Error: " . $sql . "<br>" . $db->error;
        }
    fclose($handle);
 }

连接到mysql:

<?php
    $db = new PDO('mysql:host=localhost;dbname=search;charset=utf8mb4', 'root', 'root');
    if (!$db) {
        die('Could not connect:' . mysql_error());
    }
    echo 'Connected successfully';
?>

最佳答案

您应该使用准备语句。

类似这样的

$sql = "INSERT INTO searchtable (word, array, count) VALUES (:word , :array, :count)";

$statement = $db->prepare($sql);
$statement->exec(array(
    'word' => $title,
    'array' => $fileNum,
    'count' => $titleVal
));

关于php - 错误: INSERT INTO fails mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38761750/

相关文章:

mysql - 列出组内的最大值

php - 高级 MySQL 区域成本

php - 第一个0消失了?

c# - 使用简单数据的连接池的问题

mysql - 显示进程列表

javascript - Ajax/PHP 登录没有反应

javascript - 我可以获得原始推荐网站的网址推荐吗?

php - Bootstrap 导航菜单的一些问题

php - 如何将数据库类与数组连接连接

php - 嵌入随机命名的 MP3