2016-09-18 65 views
-1

總的來說,我的數據庫中有3個冒號關於書籍 其中:Number(在我的代碼中,它的Nomer) Name(在我的代碼中它的nazvanie)和Thenathics(在我的代碼中它的Bukva)和桌上的書(在我的代碼的knigi),所以關於php和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 =「選擇\'Nomer \'\'nazvanie \'\'Bukva \' 由\'knigi \' WHERE nazvanie ='$一個人 或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。我建議你使用'Prepared statements'來代替'mysqli。*'直接查詢,因爲你的代碼可以被SQL注入。跟蹤準備好的語句過程,以便您的代碼可能不會暴露給SQL注入。 –

+0

感謝朋友。您的解決方案正在運行))) –