第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用字符串連接的 SQL 查詢

使用字符串連接的 SQL 查詢

PHP
慕妹3242003 2023-09-15 10:33:02
我是 php 新手,我有一個表“abc”,其中有列:id、姓名和年齡。我想做以下事情:僅當在輸入字段中輸入姓名時,才應使用字符串連接來構建 SQL 查詢來顯示相應的數(shù)據(jù)(id 和年齡)。這是用于搜索功能的這個問題的 SQL 查詢應該是什么?// 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";            $sql = " SELECT name, CONCAT(id,'.',age) FROM personene WHERE name = 'VALUE_FROM INPUT_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(!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 回答

?
慕的地10843

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>


查看完整回答
反對 回復 2023-09-15
?
慕姐4208626

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>


查看完整回答
反對 回復 2023-09-15
  • 2 回答
  • 0 關注
  • 142 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號