преобразование mysql в msqli - PullRequest
0 голосов
/ 20 июня 2019

Mysql устарела.У меня есть код в MySQL, который я хотел бы преобразовать в MySQL, но у меня ничего не получается.

Код работает, но у меня появляются сообщения об ошибках "Расширение MySQL устарело и будет удалено в будущем: используйте вместо этого mysqli или PDO "

Вот исходный код:

$connection = mysql_connect('host','root','password') or die ("Couldn't connect to server.");  
$db = mysql_select_db('database_name', $connection) or die ("Couldn't select database.");  

$result = mysql_query("SELECT * FROM customers WHERE cust_number ='$Cust_Number' ");

if( mysql_num_rows($result) > 0) {
    mysql_query("UPDATE `customers` SET cust_name='$Cust_Name', cust_phone='$Cust_Phone', cust_phone1='$Cust_Phone1', cust_email='$Cust_Email', cust_address='$Cust_Address' ");
}
else
{
    mysql_query("INSERT INTO customers (cust_number, cust_name, cust_phone, cust_phone1, cust_email, cust_address) VALUES ('$Cust_Number', '$Cust_Name', '$Cust_Phone', '$Cust_Phone1', '$Cust_Email', '$Cust_Address') ");
}

Я пробовал следующее преобразование:

$connection = mysqli_connect('host','root','password') or die ("Couldn't connect to server.");  
$db = mysqli_select_db($connection,'database_name') or die ("Couldn't select database."); 

if( mysqli_num_rows($result) > 0) {
    mysqli_query($connections,"UPDATE `customers` SET cust_name='$Cust_Name', cust_phone='$Cust_Phone', cust_phone1='$Cust_Phone1', cust_email='$Cust_Email', cust_address='$Cust_Address' ");
}
else
{
    mysqli_query($connections,"INSERT INTO customers (cust_number, cust_name, cust_phone, cust_phone1, cust_email, cust_address) VALUES ('$Cust_Number', '$Cust_Name', '$Cust_Phone', '$Cust_Phone1', '$Cust_Email', '$Cust_Address') ");
}

Но это не работает.

Может кто-нибудь помочь мне преобразовать исходный код в mysqli или PDO?

1 Ответ

0 голосов
/ 20 июня 2019

Ваш mysqli_query() вызывает $connections, тогда как ваше соединение $connection - вот почему ваш код дает сбой.

Однако стоит отметить, что в вашем нынешнем виде ваш кодуязвим для SQL-инъекция .Чтобы избежать этого, вы захотите использовать подготовленные операторы (то, чего не было с коннектором MySQL).

Это можно сделать с помощьюследующее:

$connection = mysqli_connect('host','root','password') or die ("Couldn't connect to server.");  
$db = mysqli_select_db($connection,'database_name') or die ("Couldn't select database."); 

if (mysqli_num_rows($result) > 0) {
    $stmt = $this->mysqli->prepare("UPDATE `customers` SET cust_name='?', cust_phone='?', cust_phone1='?', cust_email='?', cust_address='?'");
    $stmt->bind_param('sssss', $Cust_Name, $Cust_Phone, $Cust_Phone1, $Cust_Email, $Cust_Address);
    $stmt->execute();
}
else
{
    $stmt = $this->mysqli->prepare("INSERT INTO customers (cust_number, cust_name, cust_phone, cust_phone1, cust_email, cust_address) VALUES ('?', '?', '?', '?', '?', '?') ");
    $stmt->bind_param('ssssss', $Cust_Number, $Cust_Name, $Cust_Phone, $Cust_Phone1, $Cust_Email, $Cust_Address);
    $stmt->execute();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...