Эта строка mysql не будет вызывать результат? - PullRequest
0 голосов
/ 17 февраля 2019

Я создал базу данных, где, например, вы уже использовали код, он добавляет его в него, а столбцы - «промокодекс» и «idused».Когда я запускаю свой PHP-код, он не возвращает желаемый результат, нет, мне нужен.

Я пытался получить результаты, я пытался подсчитать количество затронутых строк, но он просто не даетсдвинуться с места.Я думал, что неправильно использую функцию SELECT, но когда я смотрю на это, в этом нет особого смысла.

<?php
$userid = $_SESSION["userid"];

if(isset($_POST['Submit'])) {    
    $ckrs=mysql_query("SELECT 'promocodex' FROM `oto_usedpromocodes` WHERE 'idused' ='".$userid."'") or die(mysql_error());
    $recordcode = mysqli_fetch_array($ckrs);

    if (mysqli_num_rows($recordcode) < 0) {
        $msg = "You've already used this promo code!"; 
    }
    else {
        $msg = "It worked!"; 
    } 
}
else {
    $msg = "Something's wrong!"; 
}
?>

Форма выглядит так:

"<table width="30%" align="center" cellspacing="0" cellpadding="0" style=" border: solid !important; border-radius:5px; background-color:rgb(70, 72, 76); ">
  <tr>
    <td><p>&nbsp;</p><center><font color="red"><strong><?=$clean;?></strong></center></font><p>&nbsp;</p></td>
  </tr>
  <tr>
    <td>
    <form action="promocode.php" method="post" name="promocode" id="promocode">
    <table width="500" align="center" cellpadding="4" cellspacing="0" style="margin-top:-50px;">
      <?php
      if(isset($_POST['Submit']))
      { ?>
        <tr>
          <td  colspan="4" align="center">
            <font color="red"><strong><?=$msg;?></strong></font></td>
        </tr>
    <?
      }    
    ?>

    <tr>
        <td colspan="7" nowrap="nowrap" class="admintd" align="center"><font face="Verdana, Arial, Helvetica, sans-serif"><span><strong>Promo Code<br><br></strong></span></font> </td>
        </tr>

    <tr>
                <td colspan="1" class="formfield" align="center">
                    <input name="promocode" type="text" class="footer-text" value="" width="25" padding="0" />
                </td>
    </tr>
    <tr>
        <td colspan="4" align="center" nowrap="nowrap"><input name="Submit" type="submit" class="footer-text" value="Create" /></td>
        </tr>
        </table>
    </form>
    </td>
  </tr>

</table>"

I 'мы помещаем код, который уже находится в базе данных, поэтому должен появиться результат "Вы уже использовали этот промо-код!"но появляется сообщение «Это сработало!»

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

Ответы [ 3 ]

0 голосов
/ 17 февраля 2019

Сначала это:

$ckrs=mysql_query("S ... 

будет работать лучше как:

$ckrs=mysqli_query("S ...

Это потому, что mysql_ * устарела.

Далее: mysqli_fetch_array($ckrs); возвращаетследующая строка в виде массива, поэтому mysqli_num_rows($recordcode) может вернуть ноль в этом случае.

В этом случае обычно используется счетчик, но может возникнуть ошибка, которая перехватывается.Вы можете показать ошибку с: mysqli_error($conn)

0 голосов
/ 17 февраля 2019

Не используйте mysql и mysqli.

mysqli_query ($ con, $ sql).Требуется два аргумента.

$sql = "SELECT promocodex FROM oto_usedpromocodes WHERE idused ='$userid'";
$ckrs = mysqli_query($con,$sql); // where $con is your connection string. 
$recordcode = mysqli_fetch_array($ckrs);

Попробуйте, это должно нормально работать.

0 голосов
/ 17 февраля 2019

Во-первых, вы не включили соединение с базой данных в свой вызов mysql_query и mysql_error, которые на самом деле должны быть mysqli_query и mysqli_error.Измените эту строку на эту (при условии, что ваше соединение называется $conn):

$ckrs=mysqli_query($conn, "SELECT 'promocodex' FROM `oto_usedpromocodes` WHERE 'idused' ='".$userid."'") or die(mysqli_error($conn));

Во-вторых, вы вызываете mysqli_num_rows для массива ($recordcode) вместо набора результатовзапрос ($ckrs).Вы также сравниваете менее 0, где оно должно быть больше, чем.Вам нужно изменить эту строку:

if (mysqli_num_rows($recordcode) < 0) {

на

if (mysqli_num_rows($ckrs) > 0) {

или

if (!empty($recordcode)) {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...