2017-03-18 14 views
0

こんにちは、こんにちは。mysqli準備文検索フォーム

私は最近調理していた醜いコードのクリーンアップについて質問し、私が非常に迅速に求めていた助けを受けました。ありがとう!

元の質問スレッドはここにある:PHP - Search database and return results on the same page

私はすぐに代わり、私はSQLインジェクションなどを避けるためにやっていたもののmysqliの中に準備されたステートメントを使用するように指示されました。私はこのアドバイスが私の道を行くことを知っていたので、それは驚きではありませんでした。だから私はもっと掘り下げて元のコードを書き直しました。しかし、今私はフォームを壊しました。

私が紛失しているものを見てみたい人は誰ですか?私はこのすべてで新しく、インターネットでの検索は私自身でこれをデバッグするのには役に立たなかった。

<!DOCTYPE html> 
<html> 
<head> 
<title>Client Search Results</title> 
<link rel="stylesheet" href="styles.css"> 
</head> 

<body> 

<div class="container">  
<form id="contact" action="" method="post"> 

<fieldset> 
<h4>Search For Client</h4> 
<input name="search" placeholder="Enter Name Here" type="text"> 
</fieldset> 

<fieldset> 
<button type="submit">Search</button> 
</fieldset> 

</form> 
</div> 

<div class='container'>  
<form id='contact' action='edit.php' method='post'> 

<fieldset> 
<h4>Search Results</h4> 
<select size="5" style="width:100%" name='id' > 

<?php 
// Include database communication info 
include("../../comm/com.php"); 

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 

// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

// Search 
$search = "%{$_POST['search']}%"; 
$stmt = $db->prepare("SELECT client_id, firstname, lastname, city, state FROM client WHERE firstname LIKE ?"); 
$stmt->bind_param("s", $search); 
$stmt->execute(); 
$stmt->store_result(); 
$numRows = $stmt->num_rows; 
$stmt->bind_result($client_id, $firstname, $lastname, $city, $state); 

if($result > 0) { 
    while ($stmt->fetch()) { 
    echo "<option value='$client_id'>$firstname $lastname - $city, $state</option>"; 
    } 
} 
$stmt->close(); 
?> 

</select> 
</fieldset> 

<fieldset> 
<button type='submit' name='submit'>View Selection</button> 
</fieldset> 

</form> 
<div> 

</body> 
</html> 

答えて

0

このコードを何度も書き直した後、多くの異なる方向からヘルプを受けた後、これは私が解決したコードです。私が欲しいのと同じように動作し、しっかりしているようです。

<html> 
<head> 
<title>Client Search Results</title> 
<link rel="stylesheet" href="styles.css"> 
</head> 

<body> 

<div class="container">  
<form id="contact" action="" method="post"> 

<fieldset> 
<h4>Search For Client</h4> 
<input name="search" placeholder="Enter Name Here" type="text" autofocus> 
</fieldset> 

<fieldset> 
<button type="submit">Search</button> 
</fieldset> 

</form> 
</div> 

<div class='container'>  
<form id='contact' action='edit.php' method='post'> 

<fieldset> 
<h4>Search Results</h4> 
<select size="5" style="width:100%" name='client_id' > 

<?php 

// Retrieve Search Term 
if (isset($_POST['search'])) { 
    $search = "%{$_POST['search']}%"; 
} 

// Include Connection Credentials 
include("../../comm/com.php"); 

//Connection to Database 
$link = mysqli_connect($servername, $username, $password, $dbname); 

// Connection Error Check 
if ($link->connect_errno) { 
    echo "Sorry, there seems to be a connection issue."; 
    exit; 
} 

// Prepared Statement For Database Search 
if ($stmt = $link->prepare("SELECT client_id, firstname, lastname, city, state FROM client WHERE firstname LIKE ? OR lastname LIKE ?")) { 

// Bind Search Variable 
    $stmt->bind_param('ss', $search, $search); 

// Execute the Statement 
    $stmt->execute(); 

// Bind Variables to Prepared Statement 
    $stmt->bind_result($client_id, $firstname, $lastname, $city, $state); 

// Fetch Values 
    while ($stmt->fetch()) { 

// Display Results of Search 
     echo "<option value='$client_id'>$firstname $lastname - $city, $state</option>"; 
    } 
} 

// Close Statment 
$stmt->close(); 

// Disconnect from Database 
mysqli_close($link); 
?> 

</select> 
</fieldset> 

<fieldset> 
<button type='submit' name='submit'>View Selection</button> 
</fieldset> 

</form> 
<div> 
</body> 
</html> 
関連する問題