Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.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,我正在尝试从PHP进行查询调用。然而,我不知道为什么它不能正常工作。我试图对查询执行的操作似乎有问题。在添加where子句和bindParam之前,一切都正常工作。代码正在正确执行,然后在我进行查询和绑定后停止。有人能看出我做得对吗 可能和电话后的性别问题有关。我说不出那句话 谢谢你的见解 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <titl

我正在尝试从PHP进行查询调用。然而,我不知道为什么它不能正常工作。我试图对查询执行的操作似乎有问题。在添加where子句和bindParam之前,一切都正常工作。代码正在正确执行,然后在我进行查询和绑定后停止。有人能看出我做得对吗

可能和电话后的性别问题有关。我说不出那句话

谢谢你的见解

 <!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Practice Work 5</title>
</head>
<body>

<form action="babynames.php" method = "post">
    Year:<br>
    <input type="text" name="year">
    <input type="submit" value="Submit">
</form>

<select name = "gender">
    <option value="male">Male</option>
    <option value="female">Female</option>
</select>


</body>
</html>

<?php>
    $servername = "localhost";
$username = "root";
$password = "root";
$dbname = "baby";

$year = $_POST['year'];
$gender = $_POST['gender'];

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$sql = "SELECT Year, Name, Ranking, Gender FROM BabyNames where Year = ? and Gender = ?";
$sql -> bindParam (1, $year, PDO::PARAM_INT);
$sql -> bindParam (2, $gender, PDO::PARAM_STR);

$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        echo "<br> Year: ". $row["Year"]. " ; Name: ". $row["Name"]. " ; Ranking: " . $row["Ranking"] . " ; Gender: " . $row["Gender"]. " ". "<br>";
    }
} else {
    echo "0 results";
}

$conn->close();
?>

实习工作5
年份:
男性 女性

更改此选项

$sql = "SELECT Year, Name, Ranking, Gender FROM BabyNames where Year == ? and Gender == ?";


变量$sql是字符串,而不是对象。 相符合的 必须在绑定参数之前准备语句,如:

if ($stmt = $conn->prepare($sql)) {

    $stmt->bind_param("is", $year, $gender);
    $stmt->execute();

    $result = $stmt->get_result();
    $processedRows = 0;
    while ($row = $result->fetch_assoc()) {
        $processedRows++;
        echo "<br> Year: ". $row["Year"]. " ; Name: ". $row["Name"]. " ; Ranking: " . $row["Ranking"] . " ; Gender: " . $row["Gender"]. " ". "<br>";
    }
    if (empty($processedRows)) {  echo "0 results";  }

}
$conn->close();
if($stmt=$conn->prepare($sql)){
$stmt->bind_param(“is”、$year、$gender);
$stmt->execute();
$result=$stmt->get_result();
$processedRows=0;
而($row=$result->fetch_assoc()){
$processedRows++;
回声“
年份:.$row[“Year”]。”名称:.$row[“Name”]。“排名:.$row[“排名”]。”性别:.$row[“性别”]。”
; } if(空($processedRows)){echo“0结果”;} } $conn->close();
在MySQL中使用
=
而不是
=
进行比较。好的,谢谢!还有问题。还有什么不对劲吗?也许用我做绑定的方式?这不会有帮助,因为mysql语法不区分大小写。OP还尝试使用字符串作为对象,这没有任何意义。
if ($stmt = $conn->prepare($sql)) {

    $stmt->bind_param("is", $year, $gender);
    $stmt->execute();

    $result = $stmt->get_result();
    $processedRows = 0;
    while ($row = $result->fetch_assoc()) {
        $processedRows++;
        echo "<br> Year: ". $row["Year"]. " ; Name: ". $row["Name"]. " ; Ranking: " . $row["Ranking"] . " ; Gender: " . $row["Gender"]. " ". "<br>";
    }
    if (empty($processedRows)) {  echo "0 results";  }

}
$conn->close();