错误:INSERT INTO无法使用mysql

时间:2016-08-04 08:04:14

标签: 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';
?>

1 个答案:

答案 0 :(得分:2)

你应该使用准备陈述。

像这样的东西

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

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