PHP中的mysql_查询参数
我目前正在用MySQL构建我的第一个数据库,使用PHP编写的接口,并使用“边做边学”的方法。下图显示了我的数据库。表名位于顶部,属性名与实际数据库中的名称相同。我试图使用下表中的代码查询每个属性的值。我认为我的PHP中的mysql_查询参数,php,mysql,Php,Mysql,我目前正在用MySQL构建我的第一个数据库,使用PHP编写的接口,并使用“边做边学”的方法。下图显示了我的数据库。表名位于顶部,属性名与实际数据库中的名称相同。我试图使用下表中的代码查询每个属性的值。我认为我的mysql\u query()函数有问题,因为当我的表单成功提交时,我能够观察到预期的行为,但没有返回搜索结果。有人能看出我错在哪里吗 <form name = "search" action = "<?=$PHP_SELF?>" method = "get">
mysql\u query()
函数有问题,因为当我的表单成功提交时,我能够观察到预期的行为,但没有返回搜索结果。有人能看出我错在哪里吗
<form name = "search" action = "<?=$PHP_SELF?>" method = "get">
Search for <input type = "text" name = "find" /> in
<select name = "field">
<option value = "Title">Title</option>
<option value = "Description">Description</option>
<option value = "City">Location</option>
<option value = "Company_name">Employer</option>
</select>
<input type = "submit" name = "search" value = "Search" />
</form>
$query = "SELECT Title, Descrition, Company_name, City, Date_posted, Application_deadline
FROM job, employer, address
WHERE Title = $find
OR Company_name = $find
OR Date_posted = $find
OR Application_deadline = $find
AND job.employer_id_job = employer.employer_id
AND job.address_id_job = address.address_id";
似乎至少有四个问题:
- $find周围没有引号,即
其中Title='$find'
- 您似乎没有使用
mysql\u real\u escape\u string
(或者您只是为了简洁起见在问题中省略了该代码?)
- 您拼写的
Description
不正确
- 并且具有比表达式中的括号更高的优先级:
WHERE (Title = '$find'
OR Company_name = '$find'
OR Date_posted = '$find'
OR Application_deadline = '$find')
AND job.employer_id_job = employer.employer_id
AND job.address_id_job = address.address_id"
我怀疑其中一个或多个是它不起作用的原因。然而,为了确保您应该发布更多的代码和表结构
另一点是,您使用的是旧的ANSI-89联接语法。我建议使用SQL-92中添加的较新语法(来自于…
上的JOIN b)。这将防止您犯第四个错误,并且与旧语法相比还有许多其他优势
还可以尝试使用mysql\u error
找出确切的错误消息。请在您的问题中包含此消息。在where子句中使用单引号表示值 试试这个:
$fields= array('Title','Company_name', 'Date_posted','Application_deadline');
if(!in_array($_GET['field'],$fields)) die(); // do some error handling here
$query = "SELECT Title, Descrition, Company_name, City, Date_posted, Application_deadline
FROM job, employer, address
WHERE
$field = '".mysql_real_escape_string($_GET['find']) ."'
AND job.employer_id_job = employer.employer_id
AND job.address_id_job = address.address_id";
如果单引号不是您唯一的问题(它当然是问题的一部分),请检查mysql\u error()的返回
检查此处的代码示例:
如果您喜欢边做边学,请在和参数中边做边学。这是现在做这件事的安全而正确的方法。我建议也使用ezSQL来做所有的查询处理,它很容易插入代码并使所有的处理变得简单,只需在配置文件中包含db信息,在配置文件中包含ezSQL的类,设置对类的全局调用,如
$db = new ez_SQL();
然后在引用的php文件中,只需执行以下操作
global $db;
$results = $db->query("SELECT statment", ARRAY_A);
您可以从以下位置获取ezsql:将表单数据插入mysql表的代码在哪里?您似乎只是在查询,但从未插入使用MySQL Workbench插入的测试数据。我现在的目标只是从数据库中提取数据。