使用mysqli数据库检查提交表单输入

Fre*_*rik -1 html php mysqli

当我在我的表单中键入代码时,我希望我的PHP代码检查提交代码存在于数据库中然后运行MySqli查询.我试图这样做,但我得到错误Cannot use isset() on the result of an expression (you can use "null !== expression" instead)我已经搜索了问题但没有一个确实帮助我解决或理解我的问题.

形成

<p><b>Skriv in din laddkod nedan och tryck på "Ladda"</b></p>
<form action="laddaklar.php" method="post">
<input type="text" name="laddkod"/>
<input type="submit" name="submit" value="Ladda" />
</form>
Run Code Online (Sandbox Code Playgroud)

PHP

<?php 

session_start();

    $mysqli = NEW MySQLI ('localhost', 'root', '', 'ph');

    $laddkod = isset($_POST['laddkod']) ? $_POST['laddkod'] : '';



    $kod= "SELECT refill from card_refill"; 
    $result = $mysqli->query($kod);


    if(isset($_POST['submit'] && $laddkod==$result)){


     $resultSet = $mysqli->query ("UPDATE card_credit SET value= value + (select credit from card_refill WHERE refill='" . $_POST['laddkod'] . "') WHERE card_id = '" . $_SESSION['card'] . "' ");

 echo "<b>Ditt kort har laddats!</b>";
}
else
{
    echo "Fel laddkod";
}
Run Code Online (Sandbox Code Playgroud)

Jay*_*ard 5

你得到的错误:

不能对表达式的结果使用isset()

是由尝试在此处使用表达式引起的:

if(isset($_POST['submit'] && $laddkod==$result)){...
Run Code Online (Sandbox Code Playgroud)

你必须isset()正确关闭并删除虚假额外):

if( isset($_POST['submit']) && $laddkod==$row['refill'] ){...
-----------------------add^  --------------------remove^
Run Code Online (Sandbox Code Playgroud)

此外,您不会为第一个查询获取任何行结果:

$kod= "SELECT refill from card_refill"; 
$result = $mysqli->query($kod);
$row = $result->fetch_assoc(); // The value will be in the $row array
Run Code Online (Sandbox Code Playgroud)

然后你似乎永远不会执行UPDATE查询.


此外,您不清楚您在何处设置$_SESSION['card'],但您需要确保在尝试UPDATE查询之前设置它.