我要寫php的多個查詢語法

2015-07-31 5:54 pm
s.php
<body>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<form name="form" method="post" action="ss.php">
<span style="font-size:72pt;"><b><font face="標楷體"><font color="red"> 客戶資料「查詢」 <br>
<span style="font-size:28pt;"><b><font face="標楷體"><font color="green">
姓名:<input type="text" name="name" /> <br>
手機:<input type="text" name="phone" /> <br>
公司名稱:<input type="text" name="companyname" /> <br>
公司電話:<input type="text" name="companyphone" /> <br>
--------需求-----<br>
銑刀:<input type="text" name="X" /> <br>
牙攻:<input type="text" name="S" /> <br>
CBN:<input type="text" name="cbn" /> <br>
鑽尾:<input type="text" name="A" /> <br>
填寫人:<input type="text" name="user" /> <br>
<input type="submit" name="button" value="確定" /></font>
<input type="reset" name="button2" value="重設" /> </font>
</form>
</body>
----------------------------------------------------------
ss.php
<?php session_start(); ?>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<?php
include("mysql_connect.inc.php");

if(isset($_POST['phone']) && $_POST['phone'] !='' ){
$phone=$_POST['phone'];

$sql="SELECT * FROM `user` WHERE `phone` LIKE '%$phone%'";
$result=mysql_query($sql);

if(mysql_num_rows($result)>0) {
echo "<hr /> <table border='1'>
<tr> <td>姓名</td><td>電話</td><td>公司名</td><td>公司地址</td><td>公司電話</td><td>公司傳真</td><td>牙攻</td><td>CBN</td><td>鑽尾</td>
<td>備註</td><td>購買日期</td><td>購買金額</td><td>填寫人</td></tr>";
while ($row=mysql_fetch_array($result)){
echo "<tr><td>{$row['name']}</td>
<td>{$row['phone']}</td>
<td>{$row['companyname']}</td>
<td>{$row['companyadd']}</td>
<td>{$row['companyphone']}</td>
<td>{$row['companyfax']}</td>
<td>{$row['s']}</td>
<td>{$row['cbn']}</td>
<td>{$row['a']}</td>
<td>{$row['other']}</td>
<td>{$row['shopdate']}</td>
<td>{$row['shopmoney']}</td>
<td>{$row['user']}</td></tr>";
}echo '</table>';}}?>
</body>
我現在想要更改是,我不知道我到時候會輸入哪個text,我該怎改
更新1:

回 明 我想請問一下 "SQL injection" 的問題是指?

回答 (4)

2015-09-07 8:51 pm
還需要嗎?還需要的話敲我
2015-07-31 8:12 pm
旖你的範例來說
最簡單的作法 => L拼SQL 字串

$sql="SELECT * FROM `user` WHERE 1 ";

if(isset($_POST['phone']) && $_POST['phone'] !='' ){
$sql .=" & `phone` LIKE '%$_POST['phone']%'";

if(isset($_POST['companyname']) && $_POST['companyname'] !='' ){
$sql .=" & `companyname` LIKE '%$_POST['companyname']%'";

if(isset($_POST['companyadd']) && $_POST['companyadd'] !='' ){
$sql .=" & `companyadd` LIKE '%$_POST['companyadd']%'";

以此類推.....

$result=mysql_query($sql);

不過這種作法,有 SQL injection 的問題 .......

2015-08-03 09:31:33 補充:
SQL injection WIKI
https://zh.wikipedia.org/wiki/SQL%E8%B3%87%E6%96%99%E9%9A%B1%E7%A2%BC%E6%94%BB%E6%93%8A

是說 這種拼字的方法,可以在查詢條件中寫 其他的 SQL 語法來達到預期之外的行為
2015-09-08 6:07 am
@茸毛九

其實現在比較缺的是 將已經新增的檔案 編輯過,這個部分。
2015-08-05 6:03 pm
無最佳解答


收錄日期: 2021-05-03 13:44:22
原文連結 [永久失效]:
https://hk.answers.yahoo.com/question/index?qid=20150731000015KK02755

檢視 Wayback Machine 備份