2015-01-20 3 views
-1

Мне было интересно, может ли кто-нибудь указать мне в правильном направлении, чтобы сменить мой скрипт на mysqli? Я построил скрипт ниже с mysql, и он отлично работает , но с тех пор мне сказали, что mysql_ обесценивается, и теперь мне нужно использовать mysqli. (до того, как mysql_ исчезнет, ​​и у меня остался сайт с сообщением об ошибке).Простое преобразование из mysql в mysqli

сценарий:

<?php 

//This is the directory where images will be saved 
$target = "images/"; 
$target = $target . basename($_FILES['photo']['name']); 

//This gets all the other information from the form 
$name= (isset($_POST['image_author'])); 
$description= ($_POST['image_description']); 
$pic=($_FILES['photo']['name']); 


// Connects to your Database 
mysql_connect("localhost", "root", "root") or die(mysql_error()) ; 
mysql_select_db("image_gallery") or die(mysql_error()) ; 

//Writes the information to the database 
mysql_query("INSERT INTO images (image_author, image_description, image_pathname) 
VALUES ('$name', '$description', '$pic'"); 

//Writes the photo to the server 
if(move_uploaded_file($_FILES['photo']['tmp_name'], $target)) 
{ 

//Tells you if its all ok 
echo "The file has been uploaded, and your information has been added to the directory <p> <a href='upload.php'> Go back</a>"; 
} 
else { 

//Gives and error if its not 
echo "Sorry, there was a problem uploading your file."; 
} 
?> 
+4

Смотрите там на праве, где он говорит " Связанный"? Есть около полутора десятков вопросов об одном и том же. Читали ли вы их? – j08691

+0

Да. В противном случае я не стал бы спрашивать. –

+0

Начните читать эту страницу о том, как избежать SQL-инъекции в PHP. http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php –

ответ

0

Попробуйте это, я использовал его, как показано ниже. Здесь изменить DB_NAME = Ваш первоначальный AME базе данных

db.php (создать отдельный файл подключения)

$db_hostname = "localhost"; //usually "localhost be default" 
$db_username = "root"; //your user name 
$db_pass = "root"; //the password for your user 
$db_name = "yourdatabasename"; //the name of the database 

// connect to database 
$db = new mysqli ($db_hostname, $db_username, $db_pass, $db_name); 
if ($db->connect_error) { 
trigger_error('Database connection failed: ' . $db->connect_error, E_USER_ERROR); 
} 

Теперь это ваш файл

<?php 
include('db.php'); 
//This is the directory where images will be saved 
$target = "images/"; 
$target = $target . basename($_FILES['photo']['name']); 

//This gets all the other information from the form 
$name= (isset($_POST['image_author'])); 
$description= ($_POST['image_description']); 
$pic=($_FILES['photo']['name']); 


// Connects to your Database 
mysqli_select_db($db,"image_gallery") or die(mysqli_error($db)); 

//Writes the information to the database 
$result = mysqli_query($db,"INSERT INTO images (image_author, image_description, image_pathname) VALUES ('$name', '$description', '$pic')"); 

//Writes the photo to the server 
if(move_uploaded_file($_FILES['photo']['tmp_name'], $target)) 
{ 

//Tells you if its all ok 
echo "The file has been uploaded, and your information has been added to the directory <p> <a href='upload.php'> Go back</a>"; 
} 
else { 

//Gives and error if its not 
echo "Sorry, there was a problem uploading your file."; 
} 
?> 
+0

Извините @koc, но здесь есть ошибки, которые не будут работать - 'mysqli_error()' – Martin

+0

вы хотите создать отдельный файл подключения, см. Выше мой 1-й код, имя которого db.php и $ db выходит из этого файл подключения. – koc

+0

извините, мой плохой, я упустил db.php – Martin

2

У вас есть два варианта.

1- Сначала исправьте свой код для работы с mysql_* функции. Вы сейчас широко распространены в SQL-инъекциях. Затем обновите.

2- (предпочтительный) Отменить код, потому что он неправильный и уязвимый. Начните с чего-то лучшего, например PDO и подготовленных запросов, и никогда не волнуйтесь о впрыске снова.

0

Я полностью согласен с Ниет Темный Absol, относительно предпочтительного способа, как объектно-ориентированное MySQLi (или ПДО)

Но, я был в таком же положении, вам не так долго ago- и вот быстрый и грязное решение:

1) Создайте соединение MySQLi с базой данных, замените (закомментируйте) свое текущее соединение.

пример:

$dbuser="XXX"; 
$db="YYY"; 
$dbpass="TTTTT"; 
$MysqliLink = mysqli_connect("localhost", $dbuser, $dbpass, $db); 
if (! $MysqliLink) 
    { 
    die("Connection Error (" . mysqli_connect_errno() . ") ". mysqli_connect_error()); 
    mysqli_close($MysqliLink); 
    } 
mysqli_set_charset($MysqliLink, "utf8"); 

Единственный бит, который может быть новым для вас, чтобы использовать переменную, которая является полностью уникальным для вашего сайта, и вряд ли будут случайно перезаписаны, для $MysqliLink. Как только это будет сделано, и установить можно перейти на 2-й ступени:

2) Поиск и замена всего сайта следующим:

mysql_query(" -> становится ->mysqli_query($MysqliLink, "

mysql_error() - > становится ->mysqli_error($MysqliLink)

mysql_ -> становится ->mysqli_

Есть несколько FUNC ЦИИ, что изменения, такие как: mysql_num_rows() -> становится ->mysqli_num_rows($MysqliLink)

3) В качестве дополнительной записке, что это хорошая идея, чтобы войти в привычку использовать

$valueToInputIntoSql = mysqli_real_escape_string($MysqliLink,$value); 

бежать apostraphes и например, хотя это не совсем идеально, это долгий путь, чтобы сделать входы более безопасными.

4) Я думаю, что это связано с моей памятью о том, чтобы сделать это примерно до 12 разных сайтов, которые я унаследовал, поиск и замена сайта - это огромная экономия времени. Если кто-то подталкивает мою память к другим заменам, чтобы сделать это добавлю их сюда.

Удачи. Затем прочитайте также соединения OO DB.

+0

Спасибо вам большое :) –

+0

Если мое решение работает, вы можете поставить галочку рядом с моим ответом наверху или темой. и/или нажмите стрелку вверх, чтобы добавить кредит на мой ответ. Приветствия. – Martin

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