Скрипт неправильно отправляет данные для входа

Я только начал кодировать свой собственный скрипт около часа назад, и я столкнулся с ошибкой, которую я не знаю, как исправить. Похоже, что все анализируется правильно, кроме имени пользователя, по какой-то причине, когда я выполняю свою таблицу PHP создать скрипт, он не анализирует имя пользователя из config.php, а выполняет скрипт без имени пользователя.

Я поместил код через phpcodechecker.com/, и он мне ничего не дал, даже никаких предупреждений, он меня действительно сильно смутил, код выглядит хорошо для меня, но я совсем новичок в этом, поэтому я, вероятно, пропустил что-то ОГРОМНОЕ. , любая помощь будет принята с благодарностью.

Почему этот код не анализирует имя пользователя в createtable.php при попытке подключения??

Фрагменты кода, о которых идет речь; То, как стек форматирует кодовые блоки, меня чертовски смущает, поэтому я просто использую pastebin.

config.php

createtable.php


person Ben F    schedule 31.05.2013    source источник
comment
Если вы подключаетесь в config.php, почему вы переподключаетесь в createtable.php?   -  person MatthewMcGovern    schedule 31.05.2013
comment
Вы сделали очень хорошее замечание, удалили это, но он по-прежнему выводит Невозможно выбрать определенную базу данных: доступ запрещен для пользователя ''@'localhost' к базе данных 'testdb', который говорит мне, что ему все еще не удается отправить корневое имя пользователя в базу данных , я не понимаю, почему   -  person Ben F    schedule 31.05.2013
comment
Взгляните на ответ Фабио, он должен решить проблему.   -  person MatthewMcGovern    schedule 31.05.2013


Ответы (1)


Это связано с тем, что вы смешиваете mysqli и mysql API в config.php, что в конечном итоге приводит к полному отсутствию связи.

mysqli_connect($db_hostname, $db_username, $db_password)

mysql_select_db($db_database) 

Чтобы установить правильное соединение с базой данных с помощью mysqli (которое, очевидно, лучше использовать, поскольку функции mysql_* устарели), сделайте что-то вроде этого:

$mysqli = new mysqli('localhost', 'fake_user', 'my_password', 'my_db');

if ($mysqli->connect_errno) {
    die('Connect Error: ' . $mysqli->connect_errno);
}

Вы можете ознакомиться с документацией здесь

Я хотел бы добавить, что вы можете использовать соединение из config.php в любых других скриптах, просто требующих этого.

require('config.php');

так что ваш creatables.php будет выглядеть так

require("config.php");

$sql="CREATE TABLE quoter (
    id int NOT NULL AUTO_INCREMENT,
    quote text NOT NULL,
    quoteby CHAR(50) NOT NULL,
    PIMARY KEY (id)
    )";

if (mysqli_query($mysqli,$sql))
{
    echo "Table 'quoter' was created sucessfully";
}
else
{
    echo "Error creating table 'quoter': ".mysqli_error($mysqli);
}

и ваш config.php

$mysqli = new mysqli('localhost', 'fake_user', 'my_password', 'my_db');

if ($mysqli->connect_errno) {
    die('Connect Error: ' . $mysqli->connect_errno);
}

Я хотел бы, чтобы вы заметили, что $mysqli - это параметр, который обрабатывает соединение, поэтому вам нужно передать его при выполнении операций в вашей базе данных, например

mysqli_query($mysqli,$sql);
           //^here it is
person Fabio    schedule 31.05.2013
comment
Спасибо, Фабио, ваш пост был очень информативным, и исходный код / ​​документация были очень оценены, после прочтения этого я собираюсь перезапустить весь config.php в mysqli. Есть ли какая-либо серьезная проблема с файлом createtable.php, который вы можете решить? видите, что будет конфликт с mysqli в config.php? - person Ben F; 31.05.2013
comment
@BenF я обновил свой ответ, чтобы вы поняли, пожалуйста, проверьте его - person Fabio; 31.05.2013
comment
Еще раз спасибо, Фабио, я просмотрел ссылки на все, что вы опубликовали, чтобы правильно изучить это, и внес несколько небольших изменений, но, по сути, вы заставили это работать на меня :) На самом деле я рассматривал возможность переключения всего этого обратно на MySQL, но с вашей помощью и ссылками MySQLi не так пугающе. - person Ben F; 31.05.2013
comment
@BenF Добро пожаловать. Я бы посоветовал узнать о prepared statements в качестве следующего шага, это поможет вам правильно работать с базой данных mysql в любой ситуации. - person Fabio; 31.05.2013
comment
успех был недолгим, по какой-то причине он говорит, что у меня не выбрана база данных, хотя я четко сказал ей выбрать testdb pastebin.com/B3UXrmxy - person Ben F; 31.05.2013