Php 使用换行符搜索textarea数据的查询
我使用输入标签在表单中输入地址 输入表格代码:Php 使用换行符搜索textarea数据的查询,php,mysql,html,Php,Mysql,Html,我使用输入标签在表单中输入地址 输入表格代码: <input type="text" name="address"> 搜索地址的搜索查询没有任何问题 搜索表格代码: <input type="hidden" name="category_address" value="address"/> <select name='criteria_address'"> <option selected="selected">
<input type="text" name="address">
搜索地址的搜索查询没有任何问题
搜索表格代码:
<input type="hidden" name="category_address" value="address"/>
<select name='criteria_address'">
<option selected="selected"> </option>
<?php
$order = "SELECT DISTINCT address FROM lh_clients ORDER BY clientname" or die (mysql_error());
$result = mysql_query($order);
while($data = mysql_fetch_array($result))
{
echo ("<option> $data[address] </option>");
}
?>
如果在searchword中添加了换行符,则只能获取数据库中存储了该换行符的行
一,。
如果数据库中存储了地址,如
“第1街123号45镇”
,
然后你试着通过写
“街道1
12345城镇
“
它们不匹配,您可能希望用%
替换换行符以允许其他分隔符
二,。
如果您的地址存储在数据库中,如street 1
,并且您的搜索
“街道1
“
然后,您可能希望在搜索词上使用trim()
,以消除多余的换行符
三,。
为避免甲壳返回问题,您可以使用REPLACE
其中:address
应绑定/替换为输入变量请不要使用mysql.*
函数来生成新代码。它们不再得到维护,社区已开始恢复。看到了吗?相反,你应该学习并使用或。如果你不能决定,将帮助你做出选择。如果你想学习,。和关于SQL注入的知识,你将有另一个改变的理由!好的……我会处理的。谢谢。实际上我想把地址和换行一起存储在db中。当我搜索它时,地址显示的是完全相同的面孔,我被输入到文本字段中的换行符@Puggan设置当它可以是一个克拉格返回字符(“\r”,CR,0x13)除了换行符/换行符(“\n”,LF,0x10),linux主要只使用“\n”,windows主要使用“\r\n”并认为mac使用“\r”作为新的字符lines@PugganSe自OSX以来,Mac一直使用unix样式“\n”。但是你是对的,我猜是“\r\n”vs“\n”打乱了搜索。对不起,请你详细说明一下,我不明白@Puggani如果要存储:A、换行符、A,则可以存储为3个字节:“A\nA”=0x410A41,或存储为4个字节:“A\r\nA”=0x410D0A41,从外观上看它们很相似,但通过数字方式比较3个字节的文本与4个字节的文本不匹配
if(isset($_POST['criteria_address']))
{
$category_address = $_POST['category_address'];
$criteria_address = $_POST['criteria_address'];
$query = "SELECT * FROM lh_clients WHERE $category_address LIKE '%".$criteria_address."%'";
echo "<tr><td colspan='8'>$num_rows Results Found</td></tr>";
while($data = mysql_fetch_array($result))
{
echo("<tr>
<td>$data[clientname]</td>
<td>$data[clienttype]</td>
<td>$data[address]</td>
<td>$data[contacts]</td>
<td>$data[sensitivity]</td>
<td>$data[acountmanager]</td>
<td>$data[responsibleexecutive]</td>
</tr>");
}
<textarea name="address"></textarea>
SELECT *
FROM lh_clients
WHERE
REPLACE(adress, '\r', '') LIKE CONCAT('%', REPLACE(:adress, '\r', ''), '%');