2 回答

TA貢獻1785條經(jīng)驗 獲得超8個贊
目前尚不清楚為什么要concatenate
在 SQL 查詢中使用字段,而在 html 中這些字段顯然顯示在它們自己的列中。您擁有的代碼對SQL 注入完全開放,因此您需要考慮使用 aprepared statement
來安全地處理用戶提供的輸入。
<?php
? ? $data=[];
? ??
? ? error_reporting( E_ALL );
? ??
? ? if( $_SERVER['REQUEST_METHOD']=='GET' && !empty( $_GET['name'] ) ){
? ??
? ? ? ? $SERVER_NAME='';
? ? ? ? $USER_NAME='';
? ? ? ? $PASSWORD='';
? ? ? ? $DATABASE_NAME='';
? ? ? ??
? ? ? ??
? ? ? ??
? ? ? ? mysqli_report( MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT );
? ? ? ? $conn=new mysqli( $SERVER_NAME, $USER_NAME, $PASSWORD, $DATABASE_NAME );
? ? ? ??
? ? ? ? try{
? ? ? ??
? ? ? ? ? ? $sql = 'select `name`, `id`, `age` from `personene` where `name` = ?';
? ? ? ? ? ? $stmt=$conn->prepare( $sql );
? ? ? ? ? ? $stmt->bind_param('s', $_GET['name'] );
? ? ? ? ? ? $stmt->execute();
? ? ? ? ? ? $stmt->bind_result( $name, $id, $age);
? ? ? ? ? ??
? ? ? ? ? ? while( $stmt->fetch() )$data[]=[
? ? ? ? ? ? ? ? 'name'? =>? $name,
? ? ? ? ? ? ? ? 'id'? ? =>? $id,
? ? ? ? ? ? ? ? 'age'? ?=>? $age
? ? ? ? ? ? ];
? ? ? ? ? ? $stmt->free_result();
? ? ? ? ? ? $stmt->close();
? ? ? ? ? ? $conn->close();
? ? ? ? ? ??
? ? ? ? }catch( mysqli_sql_exception $e ){
? ? ? ? ? ? exit( $e->getMessage() );
? ? ? ? }
? ? }
?>
<!DOCTYPE html>
<html>
? ? <head>
? ? ? ? <title>Fetch user details</title>
? ? </head>
? ? <body>
? ? ? ??
? ? ? ? <p>Please enter the name:</p>
? ? ? ??
? ? ? ? <form method='GET'>
? ? ? ? ? ? <input type='input' name='name' />
? ? ? ? ? ? <br/>
? ? ? ? ? ? <input type='submit' name='sendbtn' value='Send' />
? ? ? ? </form>
? ? ? ??
? ? ? ??
? ? ? ? <?php
? ? ? ? ? ? if( !empty( $data ) ) {
? ? ? ? ? ? ? ? echo "
? ? ? ? ? ? ? ? <h1>Persons:</h1>
? ? ? ? ? ? ? ? <table border='1'>
? ? ? ? ? ? ? ? ? ? <tr>
? ? ? ? ? ? ? ? ? ? ? ? <th>Id</th>
? ? ? ? ? ? ? ? ? ? ? ? <th>Firstname</th>
? ? ? ? ? ? ? ? ? ? ? ? <th>Age</th>
? ? ? ? ? ? ? ? ? ? </tr>";
? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? foreach( $data as $row ) {
? ? ? ? ? ? ? ? ? ? echo "
? ? ? ? ? ? ? ? ? ? <tr>
? ? ? ? ? ? ? ? ? ? ? ? <td>{$row["id"]}</td>
? ? ? ? ? ? ? ? ? ? ? ? <td>{$row["name"]}</td>
? ? ? ? ? ? ? ? ? ? ? ? <td>{$row["age"]}</td>
? ? ? ? ? ? ? ? ? ? </tr>";
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? echo "</table>";
? ? ? ? ? ? } else {
? ? ? ? ? ? ? ? echo "No data available";
? ? ? ? ? ? }
? ? ? ? ?>
? ? ? ??
? ? </body>
</html>

TA貢獻1852條經(jīng)驗 獲得超7個贊
對于要查找與名稱相關的記錄的 SQL 查詢,您必須使用此查詢,
select?concat('id',?'-',?'age')?as?user_data?from?abc?where?name?=?$REQUEST['search_name'];
或者您可以使用LIKE條件從表中獲取記錄。
select?concat('id',?'-',?'age')?as?user_data?from?abc?where?name?like? $REQUEST['search_name'];
這是您的代碼的更新,
這是您的代碼的更新,
<?php
// Create connection
$conn = new mysqli($SERVER_NAME, $USER_NAME, $PASSWORD, $DATABASE_NAME);
// Check connection
if ($conn->connect_error) {
?die("Connection failed: " . $conn->connect_error);
}?
// echo "Connected successfully";
$data = [];
$sql = "Please submit the form.";
if(isset($_GET['sendbtn']) ) {
? $sql = " SELECT id, name, age FROM personene WHERE name = '". $_GET['name'] ."'";
? $result = $conn->query($sql);
? $error = mysqli_error($conn);
? // Store results
? while($row = $result->fetch_assoc()) {
? ? $data[] = $row;
? }
}
?>
<!DOCTYPE html>
? <html>
? ? <head></head>
? ? <body>
? ? <?php?
? ? if(!empty($error))
? ? ? ?echo "<p style='color:red'>$error</p>";
? ? ?>
? ? <p>Please enter the name:</p>
? ? <form action="<?=$_SERVER['PHP_SELF']?>" method="GET">
? ? ? <input type="input" name="name" value="" />
? ? ? <br/>
? ? ? <input type="submit" name="sendbtn" value="Send" />
? ? </form>
? ? <?php
? ? ? if(isset($data) && !empty($data)) {
? ? ? ? echo "<h1>Persons:</h1><table border='1'><tr><th>Id</th><th>Firstname</th><th>Age</th></tr>";
? ? ? ? foreach($data as $row) {
? ? ? ? ? ? echo "<tr><td>".$row["id"]."</td>";
? ? ? ? ? ? echo "<td>".$row["name"]."</td>";
? ? ? ? ? ? echo "<td>".$row["age"]."</td></tr>";
? ? ? ? }
? ? ? ? echo "</table>";
? ? } else {
? ? ? ? echo "No data available";
? ? }
? ? echo '(Query: '.$sql.')';
?>
</body>
</html>
- 2 回答
- 0 關注
- 142 瀏覽
添加回答
舉報