MySQL请求在String

时间:2018-12-16 12:19:09

标签: php mysql database string

我有一张桌子,上面有用于预订系统的凭证。当我尝试按代码字符串选择一行时,返回的结果为空。但是我只是ctrl + C我想要选择的字符串,这真的很奇怪。

Here I'm copying code string to select it after

然后我尝试通过以下方式选择它:

SELECT * FROM `vouchers` WHERE code = "S723-452Q-3486"

它返回一个空结果

Here it returns me an empty result

但是!当我在代码字符串后面编辑带有空格的行,并在开始选择它之后立即将其删除。

Add a space after the code- save it, and remove it after

Returns the result of SELECT

所以我真的不知道为什么会这样,但是也许当我向您展示如何将这些行添加到数据库中时,它可能会帮助您理解。

我将多行放入<textarea id="codes" name="codes" rows="4" cols="35" required></textarea>中,然后在PHP中用

分隔每一行

`

//var_dump($_POST);
$name = $_POST['name'];
$discount = $_POST['discount'];
$startTime = $_POST['startTime'];
$endTime = $_POST['endTime'];
$timeAvailable = $startTime."'".$endTime;

$max_times = $_POST['max_times'];
$expDate = $_POST['expDate'];
$ppl_amount = $_POST['ppl_amount'];
$days = "";

if ($_POST['Monday']) {
    $days=$days."Monday'";
    # code...
}
if ($_POST['Tuesday']) {
    $days=$days."Tuesday'";
    # code...
}
if ($_POST['Wednesday']) {
    $days=$days."Wednesday'";
    # code...
}
if ($_POST['Thursday']) {
    $days=$days."Thursday'";
    # code...
}
if ($_POST['Friday']) {
    $days=$days."Friday'";
    # code...
}
if ($_POST['Saturday']) {
    $days=$days."Saturday'";
    # code...
}
if ($_POST['Sunday']) {
    $days=$days."Sunday'";
    # code...
}
$days = rtrim($days, "'");
//echo $days;
$codes = "";

if (isset($_POST['codes'])) {
    $codes = explode("\n", $_POST["codes"]);
}


foreach ($codes as $code) {
    $voucherQuery = 'INSERT INTO vouchers (name, discount, daysAvailable, timeAvailable, code, max_times, used, expiration_date, ppl_amount)
                    VALUES ("'.$name.'", "'.$discount.'", "'.$days.'", "'.$timeAvailable.'", "'.$code.'", "'.$max_times.'", 0, "'.$expDate.'", "'.$ppl_amount.'")';
    $result = $db_handle->getResult($voucherQuery); }

`

因此,当我将其添加到数据库时,一切看起来都很好,但是当我尝试使用一个凭单时,它显示了一个错误,因为在PHP代码中使用的SELECT返回空结果,因此我尝试直接输入SQL查询进入MySQL并得到相同的结果。

我从excel表中复制代码,然后按Ctrl + V组合键将其复制到文本区域。

1 个答案:

答案 0 :(得分:0)

" " (ASCII 32 (0x20)), an ordinary space.
"\t" (ASCII 9 (0x09)), a tab.
"\n" (ASCII 10 (0x0A)), a new line (line feed).
"\r" (ASCII 13 (0x0D)), a carriage return.
"\0" (ASCII 0 (0x00)), the NUL-byte.
"\x0B" (ASCII 11 (0x0B)), a vertical tab.

引用PHP trim

回车符隐藏在excel单元格内,因此在复制时,回车符也随之附带,即使您导入CSV也是如此。处理它的方法很多,但我使用的是PHP trim。它将清除所有不需要的字符和空格。

if (isset($_POST['codes'])) { 
$codes = explode("\n", $_POST["codes"]);}

使用trim()而不是爆炸。