我知道标题不是最好的,但它以某种方式总结了问题: 我运行一个页面,客户可以在该页面上为特定主题的导师提出请求。现在我为我的导师提供了一个数据库,其中包含他们的特定主题和一个数据库,用于来自客户的传入请求。 我现在要做的是,编写一个SQL命令,将传入请求的主题与我的导师的主题进行比较,以便教授此主题的教师在登录时会看到请求。 举个例子:安妮塔母亲要求数学老师 - >发送请求。该代码检查哪些教师教数学,并在他们登录时向这些教师显示请求。请记住,我是一个血腥的初学者。
我目前的代码如下:
// Connect to the teacher databank and select the subjects of the teacher that has logged in
$connect = mysql_connect('xxx', 'xxx', 'xxx');
mysql_set_charset("utf8", $connect);
mysql_select_db('xxx');
$sql = "SELECT subjects FROM teachers WHERE teacher LIKE '%". $_SESSION['user'] ."%'" ;
$erg = mysql_query(@$sql);
if (false === $erg) {
die (mysql_error());
}
$speicher = mysql_fetch_array($erg, MYSQL_ASSOC);
print_r ($speicher);
// Until here it functions and the array ($speicher) contains the subjects of the teacher
// Now connect to the other Databank (with the requests)
$connect = mysql_connect('xxx', 'xxx', 'xxx');
mysql_set_charset("utf8", $connect);
mysql_select_db('xxx');
$sql = "SELECT street, class, subject, school FROM requests WHERE subject IN ('%s')";
$inElems = array_map(function($elm) {
return "'" . mysql_real_escape_string($elm) . "'";
}, $speicher);
$sql1 = sprintf($sql, join(",", $inElems));
echo $sql1;
// It correctly spills out the SELECT Query but it is wrong because of the '' around the subjects are missing -> see output
$erg = mysql_query($sql1);
if (false === $erg) {
die (mysql_error());
}
$content = mysql_fetch_array($erg, MYSQL_ASSOC);
print_r ($content);
输出:
SELECT street, class, subject, school FROM requests WHERE subject IN ("English, German, Mathematics")
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'English, German, Mathematics")' at line 1
所以我不知道如何设置它是正确的,目前它不起作用,因为缺少'''在主题之间,但我不知道任何其他方式。我是一个初学者。而且我知道,我真的需要将其更改为MySQLi,我会在问题解决后尽快完成。
答案 0 :(得分:0)
您不能仅使用加入来执行此操作。首先,您必须将aphostrophes添加到项目
$inElems = array_map(function($elm) {
return "'" . mysql_real_escape_string($elm) . "'";
}, $speicher);
mysql_real_escape_string 是为了防止SQL注入。这不是推荐的方式,但让我们保持这个简单。
然后,使用数组连接
$sql1 = sprintf($sql, join(",", $inElems));
正如Oldskool所提到的 mysql _ * 函数将很快或稍后弃用,我建议您使用PDO instead
让我知道它是否有效:)
干杯