2016-08-04 5 views
0

У меня есть проблема с MySQL я получаю эту ошибкуОшибки: INSERT INTO сбой 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-и когда я вставляю их, я получаю эту ошибку и Жду» t получить любые данные в моей таблице. Что мне нужно для решения этой ошибки?

это мой код (для вставки данных):

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

недостающие кавычки в значениях. Лучше использовать инструкцию для подготовки! – Saty

+0

вот так: $ sql = "INSERT INTO searchtable (" word "," array "," count ") VALUES ($ title, $ fileNum, $ titleVal)"; ? @Saty – user3488862

+0

читать http://php.net/manual/en/pdo.prepared-statements.php – Saty

ответ

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 
)); 
+0

это пишет мне Неустранимая ошибка: Непринятая ошибка: вызов неопределенного метода PDOStatement :: exec() в C: \ MAMP \ htdocs \ paresFiles.php: 31 Трассировка стека: # 0 {main} выбрано в C: \ MAMP \ htdocs \ paresFiles.php в строке 31 – user3488862

+0

Необходимо изменить 'exec' на 'execute' – Saty

+0

@Saty ok Я изменил его, но теперь у меня есть новая ошибка: Примечание: массив для строки преобразование в C: \ MAMP \ htdocs \ paresFiles.php в строке 40 Ошибка: INSERT INTO в таблице поиска (слово, позиция, счет) VALUES (: word,: position,: count) Array – user3488862