2013-07-26 2 views
-1

Я работаю над преобразованием в MYSQLi. что-то я еще не полностью уверен в этом. Я получаю сообщение об ошибке, пытающееся разбить эту часть моего скрипта.Преобразование в MYSQLI

<?php 
// Parse the form data and add inventory item to the system 

if (isset($_POST['username'])) { 
    $username = $_POST['username']; 
    $password = $_POST['password']; 

    $level = ($_POST['level']); 
    // See if that product name is an identical match to another product in the system 
    include "includes/db_conx.php"; 

    $sql = "SELECT id FROM users WHERE username='$username' LIMIT 1"; 
    $user_query = mysqli_query($db_conx, $sql); 
    $productMatch = mysqli_num_rows($sql); // count the output amount 

    if ($productMatch > 0) { 
     header("location: message.php?msg=usererror"); 
     exit(); 
    } 
    // Add this product into the database now 
    $username = preg_replace('#[^a-z0-9]#i', '', $_POST['username']); 
    $ip = preg_replace('#[^0-9.]#', '', getenv('REMOTE_ADDR')); 
    $email = mysqli_real_escape_string($_POST['email']); 
    $p_hash = md5($password); 
    $sql = mysqli_query("INSERT INTO users (username, password, ip, email, level, date_added) 
     VALUES('$username','$p_hash','$ip','$email','$level',now())") or die (mysql_error()); 
    header("location: order_complete.php"); 
    exit(); 
} 
?> 

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

// Добавить этот продукт в базу данных Теперь

MySQLi преобразования. Мне просто не кажется, что я не могу справиться с скриптом и бросать всевозможные ошибки. Я верю, что я примерно на полпути, но введение выбора отбрасывает меня. Может кто-нибудь поможет мне разобраться в этом.

+0

Что такое значение $ уровне? Он не назначен в этом коде. Также, пожалуйста, укажите это сообщение об ошибке. – Debashis

+0

Я обновил сценарий, чтобы показать все. Обычно мне сказали, что лучше включить только часть, которая содержит проблему. Сожалею. – Chris

+0

Эта ошибка Предупреждение: mysqli_num_rows() ожидает, что параметр 1 будет mysqli_result, строка задана в /home/learnsi/public_html/user-info.php в строке 21. Предупреждение: mysqli_real_escape_string() ожидает ровно 2 параметра, 1 заданных в /home/learnsi/public_html/user-info.php в строке 31 Предупреждение: mysqli_query() ожидает как минимум 2 параметра, 1 указано в /home/learnsi/public_html/user-info.php в строке 34 Предупреждение: mysqli_error() ожидает точно 1 параметр, 0 указан в /home/learnsi/public_html/user-info.php в строке 34 – Chris

ответ

-1

Проверьте приведенный ниже код.

if (isset($_POST['username'])) {  

    $username = $_POST['username']; 
    $password = $_POST['password']; 

    $level = ($_POST['level']); 
    // See if that product name is an identical match to another product in the system 
    include "includes/db_conx.php"; // I guess it has $db_conx = mysqli_connect("localhost", "my_user", "my_password", "world"); 

    $sql = "SELECT id FROM users WHERE username='$username' LIMIT 1"; 
    $user_query = mysqli_query($db_conx, $sql); 
    $productMatch = mysqli_num_rows($user_query); // count the output amount 

    if ($productMatch > 0) { 

      header("location: message.php?msg=usererror"); 
     exit(); 
    } 
    // Add this product into the database now 
    $username = preg_replace('#[^a-z0-9]#i', '', $_POST['username']); 
    $ip = preg_replace('#[^0-9.]#', '', getenv('REMOTE_ADDR')); 

    $email = mysqli_real_escape_string($db_conx, $_POST['email']); 

    $p_hash = md5($password); 

$sql = mysqli_query($db_conx, "INSERT INTO users (username, password, ip, email, level, date_added) VALUES('$username','$p_hash','$ip','$email','$level',now())") or die (mysqli_error($db_conx)); 

    header("location: order_complete.php"); 
    exit(); 
} 
+0

Я смущен относительно того, что вы имеете в виду @debashis – Chris

+0

Я отредактировал этот код. Проверьте и используйте. В принципе, вы не использовали данные подключения mysql в качестве параметра при использовании функции mysqli_ *. – Debashis

+0

Я немного смутился, но я думаю, что знаю, что вы имеете в виду. Я получаю сообщение об ошибке – Chris

0

Вы пропусканием $ SQL как к парам mysqli_num_rows(), и это должно быть результатом mysqli_query().

Так что измените это.

$sql = "SELECT id FROM users WHERE username='$username' LIMIT 1"; 
$user_query = mysqli_query($db_conx, $sql); 
$productMatch = mysqli_num_rows($user_query); // count the output amount 

Лучшее имя для этой переменной может быть $ user_result или что-то в результате слова в.

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