ios - 无法将 'is not null' 查询传递到服务器端
<p><p><strong>情况</strong></p>
<p>我想从数据库中搜索数据。</p>
<p><strong>我的逻辑</strong></p>
<p>如果我的文本字段长度为零,则将“不为空”值传递给服务器端。否则将文本字段数据传递到服务器端。</p>
<p><strong>客户端:</strong></p>
<pre><code> UILabel *first=[init];
UILabel *sec=[init];
if (_zip.text.length==0) {
first.text=@"is not null";
}
else
if (_zip.text.length>0) {
first.text=_zip.text;
}
if (_par.text.length==0) {
sec.text=@"is not null";
}
else if (_par.text.length>0){
sec.text=_par.text;
}
NSString *selquery=;
NSData *data=];
NSString *str=[initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"%@",str);
</code></pre>
<p><strong>服务器端</strong></p>
<pre><code> <?php
$host="localhost";
$username="root";
$password="";
$db_name='BuyAndSell';
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
$zipcode=$_GET['zipcode'];
$parking=$_GET['parking'];
$sql="SELECT * FROM bas WHERE zipcode='$zipcode' and parking='$parking'";
if ($result = mysql_query($sql)){
$resultArray = array();
$tempArray = array();
while($row = mysql_fetch_object($result)){
$tempArray = $row;
array_push($resultArray, $tempArray);
}
echo json_encode($resultArray);
}
else{
echo "failed query";}
?>
</code></pre></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>为了做到正确,您需要在服务器端进行。当您的数据到达服务器时,关于 <code>_zip.text.length</code> 为零的关键信息已经消失。服务器只知道 <code>$zipcode</code> 变量设置为字符串 <code>is not null</code>,所以它运行搜索</p>
<pre><code>SELECT * FROM bas WHERE zipcode='is not null' and parking='is not null'
</code></pre>
<p>什么都找不到。</p>
<p>将长度检查的代码移至服务器端,并从客户端传递“原始”字符串。然后修改您的 PHP 代码以根据输入构造查询字符串。从基本字符串 <code>"SELECT * FROM bas WHERE"</code> 开始,然后在 <code>$zipcode</code> 为空时附加 <code>zipcode is not null</code> 或比较到 <code>$zipcode</code> 如果它不为空。之后附加 <code>"AND "</code>,并对 <code>$parking</code> 变量执行相同操作。</p>
<p><strong>注意 1:</strong>您的服务器端实现有助于进行简单的 SQL 注入(inject)攻击。引用 <a href="https://stackoverflow.com/q/60174/335858" rel="noreferrer noopener nofollow">this Q&A</a>有关如何通过参数化查询来解决此问题的信息。</p>
<p><strong>注意 2:</strong> 在生产代码中使用 <code>SELECT *</code> 不是一个好习惯。见 <a href="https://stackoverflow.com/q/3639861/335858" rel="noreferrer noopener nofollow">this Q&A</a>了解它的问题所在。</p></p>
<p style="font-size: 20px;">关于ios - 无法将'is not null' 查询传递到服务器端,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/30214184/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/30214184/
</a>
</p>
页:
[1]