如何选择另一个值是数组的值?
Posted
技术标签:
【中文标题】如何选择另一个值是数组的值?【英文标题】:How to select values where another value is an array? 【发布时间】:2015-06-30 23:16:14 【问题描述】:我正在尝试选择另一个 POST 值是数组的值,我不知道我的查询出了什么问题给我这个错误。我想知道刚刚添加到表中的课程。我在表单中有五个输入。
Notice: Trying to get property of non-object in C:\Apache\htdocs\xxx\addcourse.php on line 262
这是我的代码
<?php
if(isset($_POST['Submit']))
$code= isset($_POST['code']) ? $_POST['code'] : '';
$coursecode = isset($_POST['coursecode']) ? $_POST['coursecode'] : '';
$both=$code[$x] .' '. $coursecode[$x];
$sqlcourses = "SELECT * FROM courses where course_code='$both' ORDER BY course_id DESC LIMIT 5 ";
$resultcourses = $mysqli->query($sqlcourses);
if ($resultcourses->num_rows > 0)
while($row = $resultcourses->fetch_assoc())
?>
</p>
<p> </p>
<p> </p>
<table border="0">
<tr>
<?php
$courses=$row["course_code"];
echo $courses;
?>
</div>
</tr>
</table>
<?php
?>
【问题讨论】:
哪一行代码是262? 我刚刚注意到我需要在查询中将 $both 编辑为 '$both'。不知道错误,但没有给我任何结果? 您的查询失败。乍一看,$both
包含一个空格——$both=$code[$x] .' '. $coursecode[$x];
,所以需要用引号括起来——...where course_code='$both'...
。
你的 for 循环没有意义,$code
被评估在顶部,但在循环内定义
您的循环会创建多个查询,最后一个会覆盖所有其他查询。
【参考方案1】:
首先,您构建一个要检索的课程代码数组;为简单起见,我将省略边界检查:
$codes = [];
foreach ($_POST['code'] as $k => $code)
$codes[] = $code . ' ' . $_POST['coursecode'][$k];
然后,您准备将要使用的语句:
$stmt = $mysqli->prepare("SELECT *
FROM courses
WHERE course_code = ?
ORDER BY course_id DESC
LIMIT 5");
接着是主循环:
foreach ($codes as $code)
$stmt->bind_param('s', $code);
assert($stmt->execute());
$res = $stmt->get_result();
while ($row = $res->fetch_assoc())
// ...
【讨论】:
【参考方案2】:你可以用小的修改代码尝试这种方式
首先您必须将字符串转换为数组以获取数组中的索引 (x)
$code = explode(" ", $code);
$course = explode(" ", $coursecode);
foreach ($code as $cd => $x)
$both = $code[$x].' '.$coursecode[$x];
$sqlcourses = "SELECT * FROM courses where course_code='$both' ORDER BY course_id DESC LIMIT 5 ";
$resultcourses = $mysqli->query($sqlcourses);
其次,您可以根据自己的情况选择变量 $code 或 $course 作为循环长度
foreach ($course as $crs => $x)
your condition...
【讨论】:
以上是关于如何选择另一个值是数组的值?的主要内容,如果未能解决你的问题,请参考以下文章
Pyspark:如何根据另一列中的匹配值从数组中的第一次出现中选择直到最后的值
如何判断一个forEach循环出的多个select选择的值是相同的