在带有$ SQLStatement的数据库中插入文本

问题描述 投票:0回答:2

我想使用$ SQLStatement在数据表中插入文本,对此主题我不太了解,但是我搜索了很多信息。我用$ SQLStatement插入了一张照片的照片到数据库中的一个文件夹中,然后看到了这张照片,但是现在除了文本,我不能再做同样的事情了,对于文本,我只想在其中插入文本数据库,不做路由。因此,我的问题是我无法使用插入照片路线的相同方法来插入文本。因为这里的问题是我有照片和照片名称。照片的路线正确插入,但带有文字的我不知道是谁一起做的,不是分开的。

这里是放置数据的公式:

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
	<link rel="stylesheet" href="lib/css/bootstrap.min.css">
	<title>Subir Imagen</title>
</head>
<?php
	/*Incluyendo la conexion y enviando el Arreglo Files a la funcion*/
	include 'MOST.coneccion.php';
	if(isset($_POST['save']))
	{
		$DBImagen->uploadImage($_FILES);
	}
?>
<body style="padding-top:80px;">
	<div class="container col-lg-6 col-lg-offset-3">
		<div class="panel panel-default">
			<div class="panel-heading" style="background-color:#81BEF7;">
				<div class="panel-title">
					<center><h3>Guardar Imagen con PHP</h3></center>
				</div>
			</div>
			<div class="panel-body">
				<form method="post" enctype="multipart/form-data">
				<div>
				<input name="price" placeholder="Price">
				</div>
				<div>
				<input name="name" placeholder="Name of the ph">
				</div>
					<div class="form-group">
						<input type="file" name="imagen">	
					</div>
					<input type="submit" name="save" class="btn btn-primary">
				</form>
				<br>
				<table class="table">
					<tr>
						<th>#</th>
						<th>Imagen</th>
					</tr>
					
				</table>
			</div>
		</div>
	</div>
 Ejecutar

这里带有$ SQLStatement的函数:

<?php

class DBImagen
{

	private $DBConexion;

	function __construct($Conexion)
	{
		$this->DBConexion = $Conexion;
	}

	
	/**********************************
	to save the picture, i don't know if I need to do the same for the text
	**********************************/
	public function uploadImage($Imagen)
	{
		$ruta = 'imagenes2/'.$Imagen['imagen']['name'];
		move_uploaded_file($Imagen['imagen']['tmp_name'],$ruta);
		$SQLStatement = $this->DBConexion->prepare("INSERT INTO productosima (imagen) VALUES (:url)");
		$SQLStatement->bindParam(":url",$ruta);
		$SQLStatement->execute();
	    
	}

我打开了一个新的主意,感谢您的帮助,您使这个社区变得更好。

php html pdo
2个回答
0
投票

一些一般性建议。使用某种数据库抽象层类型的sql库。我用adodb举例。我不想重写我的所有代码,只是因为提供者更改了数据库等。确保必须根据acc调整路径。您的环境。

        <?php
        $LW = substr($_SERVER['SCRIPT_FILENAME'], 0, 1); // i run this thing on 
                                                         // windows so i need a 
                                                         // drive letter for 
                                                         // sqlite
        include_once $LW . ':/WAMP64/www/adodb5/adodb.inc.php';
        include_once $LW . ':/WAMP64/www/adodb5/adodb-pager.inc.php';
        include_once $LW . ':/WAMP64/www/adodb5/toexport.inc.php';
        include_once $LW . ':/WAMP64/www/adodb5/tohtml.inc.php';
        include_once $LW . ':/WAMP64/www/adodb5/rsfilter.inc.php';

现在已经安装了东西。我们现在必须定义我使用sqlite的连接器-在您的情况下,可能需要输入密码等。该文件应包含在无法通过网络访问的文件中就我而言,它对我来说只是一个Intranet工具,因此就足够了。您必须阅读有关数据库类型的ADODB手册。 SQLITE没有用户,也没有密码(在我的情况下),因此此字段设置为false。 ADODB CONNECT manual

  $db = null;
  $db = newAdoConnection("sqlite3");
  $db->connect($init->dbfile, null, null, null);

现在连接器知道sqliute文件在哪里。这是唯一取决于数据库引擎的东西。请参阅数据库的adodb文档现在我们准备生成一个sql字符串。有很多可能性将文本字符串传输到您的php脚本中。荒谬的POST和GET全局变量,用于会话内容。我们保持简单

 $txt=$_POST["txt"];

完全不好的主意是传输完整的SQL字符串-恐怖的情况是为此也使用$ _GET。不要 !!!我们生成SQL语句HARDCODED!因此,不可能从外部进行更改。检查文本中的“有趣”字符也可能是一个主意。

$sql="INSERT INTO artists (name) VALUES($txt);

现在我们把东西放起来

$db->execute($sql);

就这样。

它适用于所有数据库和连接器。语法略有不同,但基本内容相同。

甚至,即使我使用sqlite,也可以使用所需的任何数据库。 ADODB唯一更改的是连接器的设置。可以很好地包括在内。因此,如果您想更改数据库,只需更改indlude文件。ADODB还具有其他一些技巧。值得在那里读一点。

玩得开心!

ADODB Database abstraction layer


-1
投票

您可以使用$ _POST超全局变量来捕获表单的值:

$price = $_POST['price'];
$name = $_POST['name'];

然后使用它们来准备SQL STATEMENT:

public function uploadImage($Imagen)
{
    $ruta = 'imagenes2/'.$Imagen['imagen']['name'];
    move_uploaded_file($Imagen['imagen']['tmp_name'],$ruta);
    $SQLStatement = $this->DBConexion->prepare("INSERT INTO productosima (imagen,precio,nombre) VALUES (?,?,?)");
    $SQLStatement->bind_param('sds', $ruta,$price,$name);
    $SQLStatement->execute();

}

请注意:该参数可能是以下四种类型之一:i-整数d-双精度s-字符串b-BLOB

查看此答案以获取更多说明:Binding multiple values in pdo

© www.soinside.com 2019 - 2024. All rights reserved.