Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP中的mysql_查询参数_Php_Mysql - Fatal编程技术网

PHP中的mysql_查询参数

PHP中的mysql_查询参数,php,mysql,Php,Mysql,我目前正在用MySQL构建我的第一个数据库,使用PHP编写的接口,并使用“边做边学”的方法。下图显示了我的数据库。表名位于顶部,属性名与实际数据库中的名称相同。我试图使用下表中的代码查询每个属性的值。我认为我的mysql\u query()函数有问题,因为当我的表单成功提交时,我能够观察到预期的行为,但没有返回搜索结果。有人能看出我错在哪里吗 <form name = "search" action = "<?=$PHP_SELF?>" method = "get">

我目前正在用MySQL构建我的第一个数据库,使用PHP编写的接口,并使用“边做边学”的方法。下图显示了我的数据库。表名位于顶部,属性名与实际数据库中的名称相同。我试图使用下表中的代码查询每个属性的值。我认为我的
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插入的测试数据。我现在的目标只是从数据库中提取数据。