2015-11-19 7 views
0

Я пытаюсь вставить данные в одну из трех таблиц в базе данных с использованием PDO. Когда я вызываю функцию вставки ниже и получаю ошибку: SQLSTATE[3D000]: Invalid catalog name: 1046 No database selected.enter image description hereSQLSTATE [3D000]: Неверное имя каталога: 1046 База данных не выбрана

+6

пожалуйста, не размещать в «образ» кода, но фактический код, чтобы мы могли видеть то, что эти цитаты , и покажите полный код, пока вы используете его для своих переменных. На ваш вопрос невозможно ответить. –

+0

Я пробовал это делать, но, к сожалению, форматирование прикручивается, когда я это делаю, и становится нечитаемым. –

+0

при отправке кода есть возможность форматировать его с помощью опции форматирования кода (если строки не отображаются в виде кода, попробуйте добавить пробелы к этой строке) – davejal

ответ

0

В вашем коде я не видел, где и когда вы выбрали db. см. this для получения дополнительной информации.

Но чтобы быть ясно, что это то, что я, имея в виду

$conn = new mysqli($servername, $username, $password, $dbname); 

, как вы можете видеть, что последняя переменная является имя_бд.

+0

Хорошо. Благодаря! Я исправил это, но теперь я получаю это: 'Предупреждение: PDO :: __ construct() ожидает, что параметр 4 будет массивом, строка указана в /Applications/XAMPP/xamppfiles/htdocs/websys/lab9/insert.php в строке 7 ' ' Фатальная ошибка: Вызов функции члена SetAttribute() на не-объект в /Applications/XAMPP/xamppfiles/htdocs/websys/lab9/insert.php по линии 8' фрагмент начинается в строке 5 –

+0

вам нужно принять это как ответ и задать новый вопрос. попробуйте скопировать вставку кода в следующем вопросе вместо добавления изображения, а не полный запрос показан на картинке. – davejal

+2

Вы видите, что вопросник использовал PDO. ** Не так ли? ** Так почему вы предлагаете использовать mysqli? – RiggsFolly

3

Возможно, выйдя на конечность здесь.

Мне кажется, что вы не создали ни одну из переменных/массивов для своего подключения или неправильно настроены. (Недостаточно кода, размещенного в вашем вопросе).

Из руководства по PDO связи http://php.net/manual/en/pdo.connections.php

Пример # 1 Подключение к MySQL

<?php 
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass); 
?> 

Пример # ошибки подключения 2 Обработка

<?php 
try { 
    $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass); 
    foreach($dbh->query('SELECT * from FOO') as $row) { 
     print_r($row); 
    } 
    $dbh = null; 
} catch (PDOException $e) { 
    print "Error!: " . $e->getMessage() . "<br/>"; 
    die(); 
} 
?> 

Plus, глядя на "образ" ваш код, мне кажется, что вы используете обычные кавычки вокруг своих столбцов, а не тики. Это два разных животных в целом.

INSERT INTO Students ('RIN', 'First Name', 'Last Name' ... 

и имеет пробелы между словами, где да; необходимо использовать клещи.

Таким образом, вам необходимо изменить свой код, чтобы читать

INSERT INTO Students (`RIN`, `First Name`, `Last Name` ... 

и изменение котировок на клещах, как описано выше для всех остальных имен столбцов. Я не собирался вводить все здесь.

Вам также необходимо проверить ошибки с исключениями в DSN. Использование того, что у вас сейчас, недостаточно.

Пример # 1 Создание экземпляра PDO и установите режим ошибки

<?php 
$dsn = 'mysql:dbname=testdb;host=127.0.0.1'; 
$user = 'dbuser'; 
$password = 'dbpass'; 

try { 
    $dbh = new PDO($dsn, $user, $password); 
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
} catch (PDOException $e) { 
    echo 'Connection failed: ' . $e->getMessage(); 
} 

?> 
  • Убедитесь, что вы выбрали (и создал) правильную базу данных/таблицу и что вы фактически создали все эти столбцы и использовали правильные типы и длины.

Если у вас возникли ошибки в отношении того, к чему может жаловаться MySQL (например, апострофы), вам нужно будет избежать ваших данных; то, что вы должны делать в любом случае.

Consult следующей команды и использовать подготовленное заявление:

Смежные вопросы