使用php在sql表中搜索字符串

时间:2014-06-03 17:47:49

标签: php html sql string

PHP有点新,但我认为我走在正确的轨道上。我正在尝试在sql表上搜索序列号。我想要串口#的响应以及它的列。如果有帮助(id,30,32,31),有4列。

编辑:对不起混淆......当我输入序列号#002062008002220(所有序列号都是16位数字)。我得到一个空白页面显示...当前表格在下面

30 32 31 002062008002220 002062008002222 002062008002233

<form action="search.php" method="get">
    <input id="serials" type="text" name="serials" />
    <input type="submit" />
</form>


<?php

$con=mysqli_connect("localhost", "xxx", "xxx", "nsmserials");

if (mysqli_connect_errno ()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$search = mysql_real_escape_string($_REQUEST['serials']);
$query = "SELECT 30, 32, 31 FROM  nsmtable WHERE 30 LIKE '%$search%' OR 32 LIKE       '%$search%' OR 31 LIKE '%$search%'";

$result = mysql_query($query);
while ($row = mysql_fetch_array($result)){
echo "<li><span class='name'><b>{$row['serials']}</b></span></li>";
}

mysqli_close($con);

?>

3 个答案:

答案 0 :(得分:0)

尝试

query('//...')->fetchColumn()

答案 1 :(得分:0)

我看到你混淆了$_GET[]$_POST .. 尝试更改

$query = "SELECT nsmtable WHERE id LIKE '%".$_POST['serials']."%'";

$query = "SELECT nsmtable WHERE id LIKE '%{$search}%'";

您已经准备好了搜索字符串。使用它而不是$ _POST。对于功能注意事项,请勿混淆$_GET[]$_POST[]。如果您不记得使用的方法,请使用$_REQUEST[]

我希望这会有所帮助。

<强> ADDED 另一个查看查询揭示了其他错误。我想你想做的是

"SELECT 30, 32, 31 FROM  nsmtable WHERE 30 LIKE '%$search%' OR 32 LIKE '%$search%' OR 31 LIKE '%$search%'"

如果ID不是序列号,则查询与任何元组都不匹配。并且您可以添加一些echo语句来查看脚本停止的位置.....

其他编辑发现了其他错误

<form action="search.php" method="get">
    <input id="serials" type="text" name="serials" />
    <input type="submit" />
</form>


<?php

$con=mysqli_connect("localhost", "xxx", "xxx", "nsmserials");

if (!$con) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$search = mysql_real_escape_string($_REQUEST['serials']);
$query = "SELECT 30, 32, 31 FROM  nsmtable WHERE 30 LIKE '%$search%' OR 32 LIKE '%$search%' OR 31 LIKE '%$search%'";

$result = mysqli_query($con, $query);
if(!$result){
    die( "Error : "+ mysqli_error($con))s;
}
while ($row = mysqli_fetch_array($result)){
    echo "<li><span class='name'><b>{$row['serials']}</b></span></li>";
}

mysqli_close($con);

?>

你混淆了mysqli和mysql ....选择一个并坚持下去!

答案 2 :(得分:0)

如果不确定传递的表单字段是哪种类型使用$_REQUEST

这将使你免于许多问题。 在您的上述问题中,您正在使用GET从表单发送数据(这就是它在ur url中显示的原因)

在您的PHP脚本中使用POST方法。只需验证并且代码应该运行良好。