繁体   English   中英

使用PHP将变量插入SQL数据库时出现问题

[英]Trouble inserting variables into SQL database using PHP

我需要使用PHP将信息从HTML文档保存到SQL数据库。 但是,我对变量的串联有疑问。 这是我到目前为止的内容:

$requete= $sql->prepare"(INSERT INTO personnes (name,surname,street,city,country) 
                         VALUES". "("$name.$surname.$street.$city.$country."))";

到目前为止,这是唯一构成问题的部分,因为在我初次亮相时,其余代码仍在工作。 我究竟做错了什么?

使用,用于分隔值。 . (DOT)用于连接字符串。

$requete= $sql->prepare("INSERT INTO personnes (name,surname,street,city,country) 
        VALUES ('$name','$surname','$street','$city','$country')");

这是您的查询。 您还需要绑定参数。

$sql->bind_param($name,$surname,$street,$city,$country);

有关更多信息, 请阅读

使用? 作为值并将您的值绑定到查询。 我实际上不能给你一个例子。

PHP文档中也对此进行了描述:

您可以将参数绑定与mysqli Statement Object一起使用,在文档的面向对象样式的第一个示例中它如何显示:

Example#1面向对象的样式

<?php
$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'world');

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$stmt = $mysqli->prepare("INSERT INTO CountryLanguage VALUES (?, ?, ?, ?)");
$stmt->bind_param('sssd', $code, $language, $official, $percent);

$code = 'DEU';
$language = 'Bavarian';
$official = "F";
$percent = 11.2;

/* execute prepared statement */
$stmt->execute();

printf("%d Row inserted.\n", $stmt->affected_rows);

/* close statement and connection */
$stmt->close();

/* Clean up table CountryLanguage */
$mysqli->query("DELETE FROM CountryLanguage WHERE Language='Bavarian'");
printf("%d Row deleted.\n", $mysqli->affected_rows);

/* close connection */
$mysqli->close();
?>

以及第二个示例中描述的过程样式。

Example#2程序风格

<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$city = "Amersfoort";

/* create a prepared statement */
$stmt = mysqli_stmt_init($link);
if (mysqli_stmt_prepare($stmt, 'SELECT District FROM City WHERE Name=?')) {

    /* bind parameters for markers */
    mysqli_stmt_bind_param($stmt, "s", $city);

    /* execute query */
    mysqli_stmt_execute($stmt);

    /* bind result variables */
    mysqli_stmt_bind_result($stmt, $district);

    /* fetch value */
    mysqli_stmt_fetch($stmt);

    printf("%s is in district %s\n", $city, $district);

    /* close statement */
    mysqli_stmt_close($stmt);
}

/* close connection */
mysqli_close($link);
?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM