尝试检查登录用户是否已将name
存储在数据库中。 name
是用户输入的一组动态数组,用于输入用户添加的一组动态表单字段。有人可以告诉我如何检查并查看登录用户是否已输入该名称?我知道我的代码不对。谢谢!
MySQL代码。
SELECT *
FROM names
WHERE name = '" . $_POST['name'] . "'
AND userID = '$userID'
这是MySQL表。
CREATE TABLE names (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
userID INT NOT NULL,
name VARCHAR(255) NOT NULL,
meaning VARCHAR(255) NOT NULL,
PRIMARY KEY (id)
);
答案 0 :(得分:2)
如果$ _POST ['name']实际上是一个字符串数组,正如你所说,那就试试这个PHP:
$namesString = '';
foreach ($i=0; $i < count($_POST['name']) $i++)
{
$namesString .= "'" . mysql_real_escape_string($_POST['name'][$i]) . "'";
if(isset($_POST['name'][$i + 1]) $nameString .= ', ';
}
使用此查询:
SELECT * FROM `names`
WHERE `name` IN ( $namesString )
AND `userID` = '$userID'
查询将返回名称与$ _POST ['name']中的字符串相同的所有行。
答案 1 :(得分:1)
首先,如果userID字段是唯一的,则应在表格中添加唯一索引。
另外,请注意SQL injection attacks!
使用这样的东西更加安全:
$sqlQuery = sprintf('SELECT COUNT(id) AS "found" FROM names WHERE userID = "%s"', mysql_real_escape_string($_POST['name'], $conn));
此SQL查询将返回1行,其中包含1个字段(名为found),它将返回匹配行数(如果没有,则返回0)。如果您只想检查userID是否存在(这不需要为此获取所有数据),这是完美的。
至于动态数组,你必须发布更多信息,我会更新我的答案。
同时这里有一些有用的PHP函数可以帮助你做你想做的事情:
对于MySQL查询:
对于您的用户列表:
答案 2 :(得分:0)
如你所说,我很确定代码完全符合您的要求。 SELECT应该返回响应发送的名称和当前用户ID的记录。
如果你需要一些PHP代码,这里(应该改进):
$result = mysql_query('YOUR SELECT HERE');
if (!$result) {
die('ERROR MESSAGE');
} else {
$row = mysql_fetch_assoc($result));
// $row is an associative array whose keys are the columns of your select.
}
请记住逃避$ _POST。