Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么这个条件不起作用?_Php - Fatal编程技术网

Php 为什么这个条件不起作用?

Php 为什么这个条件不起作用?,php,Php,我注意到第一个条件不起作用 if (empty($ss)) { echo "please write your search words"; } 但第二种情况确实如此 else if ($num < 1) { echo "not found any like "; else if($num

我注意到第一个条件不起作用

if (empty($ss)) {
  echo "please write your search words";
}
但第二种情况确实如此

else if ($num < 1)   {
   echo  "not found any like ";
else if($num<1){
echo“未找到任何类似项”;
完整代码:

<?php
require_once "conf.php";
$ss= $_POST["ss"];
$sql2=("SELECT * FROM student WHERE snum = $ss");
$rs2 = mysql_query($sql2) or die(mysql_error());
$num = mysql_num_rows($rs2);

if (empty($ss)) {
    echo "please write your search words";
}
else if ($num < 1 ) {
    echo  "not found any like ";
}else {
    $sql=("SELECT * FROM student WHERE snum = $ss ");
    $rs = mysql_query($sql) or die(mysql_error());

    while($data=mysql_fetch_array($rs)) {
?>
<div id="name">
    <table align="center"  border="3" bgcolor="#FF6666">
        <tr>
            <td><? echo $data ["sname"]." "."نتيجة الطالب"; ?></td>
        </tr>
    </table>
</div>
<div id="ahmed">
    <table width="50%" height="50" align="center" border="2px" bgcolor="#BCD5F8">
        <tr>
            <td width="18%"><strong>جيولوجي</strong></td>
            <td width="13%"><strong>تاريخ</strong></td>
            <td width="13%"><strong>رياضة</strong></td>
            <td width="14%"><strong>عربي</strong></td>
            <td width="12%"><strong>علوم</strong></td>
            <td width="30%"><strong>المادة</strong></td>
        </tr>
        <tr>
            <td>100</td>
            <td>100</td>
            <td>100</td>
            <td>100</td>
            <td>100</td>
            <td><strong>الدرجة النهائية</strong></td>
        </tr>
        <td><? echo $data['geo']; ?></td>
        <td><? echo $data['snum']; ?></td>
        <td><? echo $data['math']; ?></td>
        <td><? echo $data['arab']; ?></td>
        <td><? echo $data['history']; ?></td>
        <td><strong>درجات الطالب</strong></td>
        </tr>
        <tr>
            <td colspan="5" align="center" valign="middle">
                        <? $sum= $data['geo'] + $data['snum'] +
                            $data['math'] + $data['arab'] +
                            $data['history'];
                        echo $sum ;
                        ?>
            </td>
            <td><strong>مجموع الدرجات</strong></td>
        </tr>
        <tr>
            <td colspan="5" align="center">
                        <?
                        $all=500 ;
                        $sum= $data['geo'] + $data['snum'] +
                            $data['math'] + $data['arab'] +
                            $data['history'];
                        $av=$sum/$all*100 ;
                        echo $av."%" ;
                        ?>
            </td>
            <td><strong>
                    النسبة المئوية
                </strong></td>
        </tr>
    </table>

</tr>
</div>
        <?
    }
};







100
100
100
100
100




النسبة المئوية

使用

而不是

if (empty($ss)) {
    echo "please write your search words";
}
你确定$ss吗?也就是说,有一个名为ss的POST变量。你可以用它来测试

if (empty($ss) || !isset($ss)) {
    echo "please write your search words";
}
或者在阅读post var时对其进行测试

if ((!isset($_POST["ss"]) || (!is_numeric($_POST["ss"])))
{
    $ss = 0;//empty considers 0 as been empty
}
else
{
    $ss = $_POST["ss"];
}

ss看起来也是一个数字,因此使用is\u numeric检查它是否是数字将有助于停止SQL错误,如果出于某种原因它不是。请尝试将条件更改为

if(empty($_POST['ss'])){ ... }
并继续使用$_POST['ss']而不是$ss

顺便说一句,开发时始终使用错误报告(E_ALL)。

$sql=(“从学生中选择*,其中snum=$ss”)

删除包含查询的变量($sql1和$sql2)中的括号

应该是

$sql=“选择*来自学生,其中snum=$ss”


我想这就是为什么它会告诉您在…

附近有一个错误,$ss的值是多少?因为-1不是空的(sidenote),您永远不应该信任用户提供的参数,并将它们添加到未初始化的SQL查询中。请看,您的代码是为SQL注入打开的。您不能将来自用户的参数直接传递到SQL查询中-使用intval()或者参数上的mysql_real_escape_string()(intval表示数字,m_r_s_e表示字符串)。var_dump($\u POST['ss')是什么
give you?我看到的消息是,您的SQL语法有错误;请检查与您的MySQL服务器版本对应的手册,在第1行的“”附近使用正确的语法。这可能是因为您在第2行中使用了$ss=(“SELECT*FROM student WHERE snum=$ss”);如果您将$ss=$\u POST[“ss”];替换为我的第二个代码示例,那么在您检查之前,它会进行排序吗?很抱歉,我想写if(!isset($ss)){echo“请写下您的搜索词”}是的,我尝试了你的代码,但我看到的消息是,你的SQL语法有错误;请检查与MySQL服务器版本对应的手册,以获取第1行“”附近使用的正确语法。这是我的完整html php SQL代码plzzz帮助的链接
if(empty($_POST['ss'])){ ... }