Php 在textbox中使用多个ID从mysql数据库回显电子邮件
我编写了以下脚本,它将在mysql db中搜索表单文本框中提交的某些成员ID,并为找到的每个记录编写一个mail()字符串,但它似乎不起作用,我知道我正在连接,因为如果在“连接成功”后删除所有内容,我将获得“连接成功”。如果按原样运行脚本,则会出现一个空白屏幕。对于逻辑方面的任何帮助,我们都将不胜感激Php 在textbox中使用多个ID从mysql数据库回显电子邮件,php,mysql,pdo,Php,Mysql,Pdo,我编写了以下脚本,它将在mysql db中搜索表单文本框中提交的某些成员ID,并为找到的每个记录编写一个mail()字符串,但它似乎不起作用,我知道我正在连接,因为如果在“连接成功”后删除所有内容,我将获得“连接成功”。如果按原样运行脚本,则会出现一个空白屏幕。对于逻辑方面的任何帮助,我们都将不胜感激 <?php $servername = ""; $username = ""; $password = ""; $db = ""; // Create connection $conn
<?php
$servername = "";
$username = "";
$password = "";
$db = "";
// Create connection
$conn = new mysqli($servername, $username, $password, $db);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connected Successfully";
if(isset($_POST['Submit'])) {
$MemberIDs = $_POST['MemberIDs']; // contains the values "100,107"
$SearchIDs = array($MemberIDs);
$SearchStr = implode(',', $SearchIDs); // returns 100,107
$sql = "SELECT * FROM members where id in ({$SearchStr})";
$sql->execute();
$raw_results = $sql->fetchAll();
$num_rows = count($raw_results);
if($num_rows > 0 ){
while($results = $sql->fetch($raw_results)) {
echo "mail(".$results['name']." <".$results['requestemail'].", $Subject2, $message2, $headers2);";
}
else
{
echo "No results";
}
}
}
$conn->close();
?>
表单页面HTML
<form name="test" action="test-search.php" method="POST">
<input id="MemberIDs" name="MemberIDs" type="text" value="100,107">
<input type="submit" name="Submit" value="SUBMIT" />
</form>
您希望在$conn对象上执行操作,该对象是与数据库的mysqli连接。当然,我没有办法测试这个或检查语法,但这应该可以让你接近
if(isset($_POST['Submit'])) {
// Create connection
$conn = new mysqli($servername, $username, $password, $db);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connected Successfully";
$MemberIDs = $_POST['MemberIDs']; // contains the values "100,107"
$SearchIDs = array($MemberIDs);
$SearchStr = implode(',', $SearchIDs); // returns 100,107
$sql = "SELECT * FROM members where id in ({$SearchStr})";
$results = $conn->query($sql);
if( $results->num_rows > 0 ) {
while($row = $results->fetch_assoc()) {
echo 'mail('.$row['name'].');';
}
}
else {
echo "No results";
}
$results->free();
$conn->close();
}
空白屏幕=>+btw,这个
fetchAll()
是一个PDO函数,而不是mysqli,它们不会混合在一起。告诉你,添加一个else{echo“not set”;}
到if(isset($\u POST['Submit']){…
。我打赌这会回应“未设置”。正如我所说的,你不能将PDO和mysqli混合在一起,而且你没有包含与之配套的表单,所以这只是猜测。检查错误,就像我已经给你的链接一样。你的变量$sql是一个字符串。您不能->执行()或->获取所有字符串变量。另外,您没有“查询”。所有这些,$sql=“SELECT*FROM members where id in({$SearchStr})”$sql->execute()$原始结果=$sql->fetchAll()
不执行任何操作,fetch()
是另一个PDO函数,但您正在连接mysqli。请参阅更新的问题i,因为更新的PDO连接和脚本有错误。然后我意识到你在使用mysqli,就像在我最初的问题中一样,它是有效的!有点我收到了两条记录,它们是echo(ed),而不是名称和电子邮件,我将尝试对其进行故障排除。再次坦克。好吧,现在我把我的原始回声声明包括在你的答案中,所有作品都如预期的那样。谢谢你抽出时间。