2016-09-18 2 views
-1

Всего у меня в моей базе данных 3 colons о книгах Его: номер (в моем коде его Nomer) Имя (в моем коде его название) и Thenathics (в моем коде его Bukva) и настольная книга (в моем коде его книге), такerror about php and mysql

Я имею в index1.php этого кода

<html><head> 
<title> 
Результаты поиска</title> 
<meta charset="UTF8"> 
</head> 
<body> 
<html><head> 
<title> 
Поиск и Результаты поиска</title> 
<meta charset="UTF8"> 
</head> 
<body> 
<form method="POST" action=script1.php> 
<input type="text" name='a'> 
<input type="text" name='b'> 

<button>Найти</button></form> 

</body> 
</html> 

И в script2.php этого коде

<?php 
$link = mysqli_connect("localhost", "root", "", "knigi"); 
$one=($_POST['a']); 
$two=($_POST['b']); 
$s='SELECT `Nomer`, `nazvanie`, `Bukva` 
FROM `knigi` 
WHERE 
nazvanie = $one 
or Bukva = $two'; 
$result = mysqli_query($link,$s) or die(mysqli_error($link)); 
$n=$row['Nomer']; 

while ($row = mysqli_fetch_array($result)) { 
echo"<div><ul><li>Книга номер "; 
echo $row['Nomer'];echo"<p>"; 
echo $row['nazvanie'];echo" : "; 
echo $row['Bukva'];echo"</p></li></ul></div><br>"; 
} 
?> 

скрипт дает мне

Unknown column '$one' in 'where clause'

А если поставить кавычки около одного и двух, он дает

Parse error: syntax error, unexpected T_VARIABLE in C: \ OpenServer \ domains \ localhost \ script1.php on line 8

+1

Я предполагаю, что вы испортили цитаты (одиночные, двойные и обратные). Вся ваша переменная '$ s' должна быть в двойных кавычках' '', так что переменные передаются как переменные, а не строки. Имена столбцов должны быть в обратных циклах '' '', а строки в SQL должны быть заключены в одно кавычки ' ''. Так что в основном ваш запрос должен быть чем-то вроде '$ s =" SELECT \ 'Nomer \', \ nazvanie \ ', \' Bukva \ ' FROM \' knigi \ ' WHERE nazvanie = '$ one' или Bukva = '$ two' ";' – Qirel

ответ

1

Вы не указали некоторые важные параметры на странице HTML и PHP. Если вы включите, что вся ошибка, которую вы получите, будет решена.

Ошибка 1:

Убедитесь, что у вас есть тип входа = кнопку «отправить» так, что только данные могут быть размещены с одной страницы на другую.

Заменить:

<button>Найти</button> 

С:

<input type="submit" value="Найти" name="select" /> 

Ошибка 2:

На странице PHP вы должны проверить, нажата ли кнопка или нет а затем получить значения.

Замените файл PHP, как я уже указал.

<?php 
$link = mysqli_connect("localhost", "root", "", "knigi"); 
if(isset($_POST['select'])) 
{ 
$one=($_POST['a']); 
$two=($_POST['b']); 
$s="SELECT `Nomer`, `nazvanie`, `Bukva` FROM `knigi` WHERE nazvanie = '".$one."' OR `Bukva` ='".$two."'"; 
$result = mysqli_query($link,$s) or die(mysqli_error($link)); 
while ($row = mysqli_fetch_array($result)) { 
echo"<div><ul><li>Книга номер "; 
echo $row['Nomer'];echo"<p>"; 
echo $row['nazvanie'];echo" : "; 
echo $row['Bukva'];echo"</p></li></ul></div><br>"; 
} 
} 
?> 

Вы испортили с кавычками, и вы должны изменить кавычки следующим образом в моем select statement.

+0

Тот, кто наградил кредит '-ve', может указать, какая ошибка я составил в этом. –

+0

@Manuchehr Rahimov.Я предлагаю вам использовать «Подготовленные утверждения» вместо прямого запроса 'mysqli. *', Так как ваш код является vunerable для SQL Injection. Следуйте процедуре подготовленной инструкции, чтобы код, возможно, не был подвергнут SQL-инъекциям. –

+0

благодарит друзей. Ваше решение работает))) –