2010-06-09 5 views
-1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 

<meta http-equiv="Content-Type" content="text/html; charset=windows-1256"> 
<title>اول اسكربت باذن الله</title> 
</head> 

<body> 
<table width="100%" border="1"> 
<tr> 
    <td>name</td> 
    <td>number</td> 
    <td>math</td> 
    <td>arab</td> 
    <td>history</td> 
    <td>geo</td> 

    </tr> 


<?php 


require_once "conf.php"; 

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

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)){ 
$name=$data["sname"]; 
$number=$data["snum"]; 
$math=$data["math"]; 
$arab=$data["arab"]; 
$history=$data["history"]; 
$geo=$data["geo"]; 





echo" 
    <tr> 
    <td>$name</td> 
    <td>$number</td> 
    <td>$math</td> 
    <td>$arab</td> 
    <td>$history</td> 
    <td>$geo</td> 
    </tr> 
"; 


} 
}; 
?> 
</table> 
</body> 
</html> 
+0

который код sql? – hgulyan

ответ

2

Я думаю, что $ сс = $ _POST [ "сс"]; должен пройти до

$ sql2 = ("SELECT * FROM student WHERE snum = $ ss");

+0

Cris вы veryyyyyy бог человек это работа теперь спасибо – magy

1

$ss a string? Если у вас есть это?

$sql2=("SELECT * FROM student WHERE snum = '$ss'"); 
+0

no is number num $ sql2 = ("SELECT * FROM student WHERE snum = $ ss"); – magy

+0

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; - База данных: 'Таможня' - структура таблицы для таблицы' student' CREATE TABLE IF NOT EXISTS 'student' ( ' id' INT (11) NOT NULL AUTO_INCREMENT, 'sname' VARCHAR (100) NOT NULL, 'snum' INT (15) NOT NULL,' math' INT (10) NOT NULL, ' arab' INT (10) NOT NULL,' history' INT (10) NOT NULL, 'geo' int (10) NOT NULL, ПЕРВИЧНЫЙ КЛЮЧ ('id') ) ENGINE = MyISAM DEFAULT CHARSET = cp1256 AUTO_INCREMENT = 3; – magy

2

Вы передаете несуществующую переменную $ss в запрос перед выходом:

$sql2=("SELECT * FROM student WHERE snum = $ss"); // <-- problem here 
$rs2 = mysql_query($sql2) or die(mysql_error()); 
$num = mysql_num_rows($rs2); 
$ss= $_POST["ss"]; 

Попробуйте это:

require_once "conf.php"; 

$ss= $_POST["ss"]; 

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()); 

// and more code... 
+0

Вы взглянули на персонажей в Windows 1256? – Gumbo

+0

@Gumbo: Отредактируйте мой ответ, я думаю, что он поддерживает арабика. Благодаря – Sarfraz

3

Вы не можете использовать переменную, которая не была инициализирована. В вашем случае $ss, вероятно, не определен, когда вы используете его для построения запроса в $sql2. Это приводит к неверному запросу SQL, поскольку после оператора = ничего не происходит.

Попробуйте вместо этого:

require_once "conf.php"; 
if (!isset($_POST["ss"])) { 
    echo "please write your search words"; 
} else { 
    $ss = $_POST["ss"]; 
    $query = "SELECT * FROM student WHERE snum = '".mysql_real_escape_string($ss)."'"; 
    $result = mysql_query($query) or die(mysql_error()); 
    if (mysql_num_rows($result) == 0) { 
     echo "not found anything like ".htmlspecialchars($ss); 
    } else { 
     while ($data=mysql_fetch_array($result)) { 
      // … 
     } 
    } 
} 
1

Серьезно?

Первый: php - простой язык программирования. Он выполняет все, что вы ему даете, в том порядке, в котором вы его даете. Вот почему переменная $ ss, которую вы пытаетесь использовать в своем запросе, не существует, когда вы пытаетесь ее использовать. Вы должны назначить его значение перед его использованием.

Теперь давайте начнем быть задницей. $_POST['ss'] предоставлен вашим пользователем. Не верьте этому. Никогда не доверяйте пользовательскому вводу! Они хотят взять под контроль ваш сервер, чтобы они могли найти вас и похитить вас, чтобы попросить выкупить. Поэтому не используйте его в своем запросе, не проверяя его значение. Представьте, если вы отправите $ _POST ['ss'] = '1 ИЛИ 1'; Лучший способ справиться с подобными вещами - использовать параметризованные запросы с mysqli или PDO.

+0

+1 Это моя любимая мозоль, чтобы увидеть SQL Injection уязвимый код. – tangrs

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