2013-05-14 4 views
-1

У меня проблема. В приведенном ниже коде я четко выбираю базу данных, однако она все еще дает мне сообщение об ошибке, что я этого не делал. Может ли кто-нибудь сообщить мне, что я делаю неправильно?1046: Не выбрана база данных?

<?php 

$nc = mysqli_connect("localhost", "264191", "adhiambo95"); 
if (mysqli_connect_errno()) 
{ 
    echo "Sorry I couldn't connect to mysql: " . mysqli_connect_error(); 
} 

mysqli_select_db($sc, "264191"); 

$sis = "INSERT INTO nogata_keywords ('keyword') 
    VALUE ('.$_GET[keyword]')"; 

if (!mysqli_query($nc,$sis)) 
{ 
    die('Error: ' . mysqli_error($nc)); 
} 

else 
{ 
    echo "This keyword has been added to the database."; 
} 

?> 
+0

Пожалуйста, смотрите: Почему $ Foo [бар ] неправильно? http://php.net/manual/en/language.types.array.php (щенок умирает, когда вы это делаете) – Waygood

ответ

4

Вы опечатка переменная ресурс соединения здесь:

mysqli_select_db($sc, "264191"); 

Должно быть

mysqli_select_db($nc, "264191"); 

mysqli_connect также позволяет вам указать базу данных в качестве 4-го параметра, что делает эту строку избыточное:

$nc = mysqli_connect("localhost", "264191", "adhiambo95", "264191"); 

Попробуйте.


Еще одна вещь, указывал сначала Yogesh Suthar, ваш SQL-запрос неправильно, то есть период, когда вы не должны:

$sis = "INSERT INTO nogata_keywords ('keyword') VALUE ('.$_GET[keyword]')"; 

Должно быть

$sis = "INSERT INTO nogata_keywords (`keyword`) VALUE ('".$nc->real_escape_string($_GET['keyword'])."')"; 

Потому что вы указали имя поля в одинарных кавычках и не избежали значения, которое нужно вставить в базу данных. т.е. если ключевое слово было O'Neil, это приведет к недействительности SQL.

Рассмотрите возможность переключения на использование prepare() и bind(), чтобы избежать этой проблемы.

Вы также должны использовать «ключевое слово», как в индексе, к массиву $ _GET, а не только к ключевому слову, которое на самом деле является константой. http://php.net/manual/en/language.types.array.php

+0

Вы должны исправить OP SQL-запрос для полного ответа. – Waygood

+0

@Waygood Не уверен, что это стоит нисходящее движение. Сделано редактирование. – George

+0

Почти, но не совсем: '$ sis =" INSERT INTO nogata_keywords (ключевое слово) VALUE ('".mysqli_real_escape_string ($ _ GET [' keyword '])."') ";' (I + 1'd downvoted) – Waygood

3

Вы используете неправильное подключение переменной $ СБН она должна быть $ н.д.

mysqli_select_db($nc, "264191"); 

Успение "264191" Ваше имя дб.

1

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

+0

Эй, какая ошибка? Я просто натолкнулся на это. Это дает мне следующее: Ошибка: у вас возникла ошибка в синтаксисе SQL, проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с ' ключевое слово ') VALUE (' test ')' в строке 1 –

+1

@NatashaHarrell См. мой ответ с запросом. –

0

вы также можете передать имя базы данных как 4 параметра в mysqli_connect

mysqli_connect("localhost", "264191", "adhiambo95","264191"); 

Также этот

$sis = "INSERT INTO nogata_keywords ('keyword') 
VALUE ('.$_GET[keyword]')"; 
     ^^ 

Редактировать

должен быть

$sis = "INSERT INTO nogata_keywords (`keyword`) 
VALUE ('$_GET[keyword]')"; 

Вы использовали ' вокруг keyword, вы должны использовать ` вокруг имен столбцов

+0

mysqli: должно быть 'INSERT INTO nogata_keywords (keyword) VALUES (?)' С подготовкой и привязкой? – Waygood

+0

Я сделал это, но это дает ту же ошибку: Ошибка: у вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего MySQL-сервера, для правильного синтаксиса для использования рядом с «ключевым словом») VALUE ('') 'в строке 1 –

+1

См. обновление цитат с именами полей – Waygood

0

Просто для записи, правильная версия, с многочисленными ошибками фиксированной

<?php 

$mysqli = mysqli_connect("localhost", "264191", "adhiambo95", "264191"); 
if (!$mysqli) 
{ 
    trigger_error(mysqli_connect_error()); 
} 

$sql = "INSERT INTO nogata_keywords (keyword) VALUE (?)"; 
$stm = $mysqli->prepare($sql) or trigger_error($mysqli->error); 
$stm->bindParam("s",$_GET['keyword']) or trigger_error($mysqli->error); 
$stm->execute() or trigger_error($mysqli->error); 
Смежные вопросы